【发布时间】:2018-12-13 19:18:28
【问题描述】:
在编程方面,我远远低于新手,因为我在网上找到了 VBA 代码并尝试重新配置它以达到我的目的。
我正在使用以下代码在某些单元格更改时捕获时间戳和用户名,这非常有效,当我尝试添加或删除行时出现问题。
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim ThisRow As Long ' make sure to declare all the variables and appropriate types
ThisRow = Target.Row
If Target.Column >= 1 And Target.Column <= 1 Then
Dim sOld As String, sNew As String
sNew = Target.Value 'capture new value
With Application
.EnableEvents = False
.Undo
End With
sOld = Target.Value 'capture old value
Target.Value = sNew 'reset new value
If sOld <> sNew Then
' time stamp & username corresponding to cell's last update
Range("L" & ThisRow).Value = Now & Environ("username")
Range("L:L").EntireColumn.AutoFit
End If
Application.EnableEvents = True
End If
End Sub
运行时错误“13”:
弹出类型不匹配窗口。如果我点击结束,则添加该行或 已删除,但如果我在代码旁边添加 On Error Resume ,弹出 不会弹出,但该行也不会被删除或添加。
有什么办法可以解决这个问题吗?还是我注定每次需要添加或删除一行时都按结束?
编辑:
忘了提 Debug 将sNew = Target.Value 'capture new value 突出显示为问题。
【问题讨论】:
-
Target可以是多单元格范围(如添加新行时),因此您不能将其值分配给字符串类型的变量。 -
On Error Resume Next只是说程序运行不管任何错误,你可以忽略它。代码在哪一行中断?
标签: vba runtime-error worksheet type-mismatch onerror