麻煩大神們給看看:
sheet1 輸入原始值 如下:
產品 價格
氯化鈣 74 110
氯化鈣 77 130
會不定時更新價格。希望可以在sheet2 sheet3 中分別記錄2種產品的歷史價格(更新記錄)
在網上找了個代碼,只能在sheet1 中運行,而且只能寫一個產品的,麻煩大神幫忙看看應該如何修改。
Dim xVal As String
Dim iVal As Integer
Private Sub Worksheet_Change(ByVal Target As Range)
Static xCount As Integer
iVal = Application.WorksheetFunction.Count(Range("F:F"), 1)
xCount = iVal
Application.EnableEvents = False
If Target.Address = Range("B2").Address Then
Range("E3").Offset(xCount, 0).Value = Range("B2").Value
Range("F3").Offset(xCount, 0).Value = Now
xCount = xCount + 1
Else
If xVal <> Range("B2").Value Then
Range("E3").Offset(xCount, 0).Value = Range("B2").Value
Range("F3").Offset(xCount, 0).Value = Now
xCount = xCount + 1
End If
End If
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
xVal = Range("B2").Value
End Sub
按照這個代碼運行,會在sheet1 的e4,f4處顯示的更新記錄:
150 2019/6/6 23:58
110 2019/6/6 23:58
希望這個可以分別統計在后面專門建立的sheet中。也嘗試了在后面的頁面中參考sheet1的資料來計算,個別時候能算,而且只運算最靠前的sheet,多數時候,每個sheet都寫這個代碼,就什么都不記錄了。
求指點!
uj5u.com熱心網友回復:
寫好了,代碼如下:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim objSheet As Worksheet
Select Case Target.Address
Case "$B$2"
Set objSheet = Sheets(2)
Case "$B$3"
Set objSheet = Sheets(3)
End Select
Dim lngRow As Long
lngRow = 1
While objSheet.Cells(lngRow, 1) <> ""
lngRow = lngRow + 1
Wend
If lngRow > 1 Then
If CDbl(objSheet.Cells(lngRow - 1, 1)) = CDbl(Target) Then
Exit Sub
End If
End If
objSheet.Cells(lngRow, 1) = Target.Value
objSheet.Cells(lngRow, 2) = Now
End Sub
運行示例:



下載地址:
鏈接:https://pan.baidu.com/s/1ijqrW-4Nbbr_eZei-ISpPA
提取碼:wmc4
uj5u.com熱心網友回復:
完美解決,謝謝大神
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/31875.html
標籤:VBA
上一篇:哪位大神幫個忙,一個vb編程題
