每次单击命令按钮保存订单/行时,以下代码都会创建/更新日期和时间戳。 “TIMESTAMP”是工作表中名为“MASTER”的命名范围(第 106 列)。该代码被输入到工作表对象“MASTER”中。 我尝试将 Dim r As Range 更改为 Dim r As String 因为工作表中的第 106 列格式为文本,但这没有帮助。我还尝试 Debug.Print 错误行,但我一定做得不对,因为我在立即窗口中没有得到任何结果。
但是,我收到运行时错误“13” - 类型不匹配。
预先感谢您的帮助。
'***TIMESTAMP***
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Dim Intersection As Range
Dim cell As Range
Set r = Range("TIMESTAMP")
Set Intersection = Intersect(r, Target)
If Intersection Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each cell In Intersection
Range(r & cell.Row).Value = Date & " " & Time 'run-time error '13' - Type mismatch
Next cell
Application.EnableEvents = True
End Sub
我正在编辑这篇文章,以展示我已经尝试过但没有成功的内容。
可能有很多方法可以解决这个问题,但这似乎对我有用:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lr As Long
Dim a As Range
Application.EnableEvents = False
Sheets("MASTER").Cells(Target.Row, Range("TIMESTAMP").Column).Value = Date & " " & Time
lr = Sheets("MASTER").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Set a = ThisWorkbook.Names("TIMESTAMP").RefersToRange.CurrentRegion
Set a = Range("TIMESTAMP").Resize(lr)
a.Name = "TIMESTAMP"
Application.EnableEvents = True
End Sub
这应该更新命名范围“TIMESTAMP”以包括已更改的任何行。
您应该更新工作表引用以匹配您的工作簿。如果您有任何问题或未按预期工作,请告诉我。
祝你好运!