使用VBA在Excel中删除多行时,运行时错误13
我有一个macros如下:
Dim oval Public Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Value = Null Then Exit Sub Application.EnableEvents = False oval = Target.Value MsgBox Target.Count Application.EnableEvents = True End Sub
当我运行下面的macros,当我select多行,然后删除它,它会抛出下面的错误。 它只发生多行。 我也尝试添加一个条件,说如果Target.Count> 1然后退出子,这似乎并没有解决它。
Microsoft Visual Basic Run-time error '13': Type mismatch
当您select多个单元格时,Target.Value是一个数组,因此您无法检查它的“值”要检查第一个项目的值,您可以执行以下操作(用于testing):
Debug.Print Target.Value()(1,1)
你可以用IsArray来检查这个,如果你想要结束的话,那么就是一个数组
If IsArray(Target.Value) Then Exit Sub
它看起来像你想要的数量,所以也许是这样的:
Dim oval Public Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then MsgBox Target.Count Else If Target.Value = vbNullString Then Exit Sub oval = Target.Value MsgBox Target.Count End If End Sub
虽然我确定你想用椭圆做点什么,但是我会把它留给你。
将您的代码从Worksheet_SelectionChange
事件更改为Worksheet_Change
事件。
此外,多个单元格将只有一次删除多个单元格,所以不需要第二个If Target.Value = "" Then Exit Sub
。 除非你不想oval
有一个“空”的价值。
码
Dim oval Public Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub ' this line might be redundant 'If Target.Value = "" Then Exit Sub Application.EnableEvents = False oval = Target.Value Application.EnableEvents = True End Sub