运行时间错误13在使用VBA中删除Excel中的多行时



我有一个宏,如下:

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

当我运行以下宏,然后选择多个行然后删除它时,它会引发下面的错误。它仅发生在多行。我还尝试添加一个条件,说明目标。计数> 1,然后退出子,这似乎也没有解决。

Microsoft Visual Basic
Run-time error '13':
Type mismatch

target.value是选择多个单元格时的数组,因此您无法检查其"值"以检查您可以做类似(用于测试)的第一个项目的值:

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

最新更新