Excel VBA代码返回错误

que*_*dor 1 excel vba excel-vba

有这个vba的excel文件:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not (Application.Intersect(Target, Range("A1:A1000")) _
      Is Nothing) Then
        With Target
            If Not .HasFormula Then
                Application.EnableEvents = False
                .Value = UCase(.Value)
                Application.EnableEvents = True
            End If
        End With
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

这样做,当在这些单元格上插入某些内容时,它会将其转换为大写字母.一切正常,只是一个小问题......文件每天都被几个人使用,因此插入的数据每天都被删除几次.如果我一次删除一个单元格,它会顺利运行,如果我同时删除了几个单元格,则会出现运行时错误"13".

我怎么能纠正这个?

小智 5

当Target超过单个单元格时,遍历Target中的每个匹配单元格.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:A1000") Is Nothing Then
        dim trgt as range
        for each trgt in Intersect(Target, Range("A1:A1000")
            With trgt 
                If Not .HasFormula Then
                    Application.EnableEvents = False
                    .Value = UCase(.Value)
                    Application.EnableEvents = True
                End If
            End With
         next trgt
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)