vba - Excel VBA 代码返回错误

标签 vba excel

有这个 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

这是做什么的,当在这些单元格上插入一些东西时,它会将其转换为大写字母。一切正常,只是一个小问题......文件每天被几个人使用,所以插入的数据每天都会被删除几次。发生的情况是,如果我一次删除一个单元格,它运行平稳,如果我同时删除多个单元格,我会收到运行时错误“13”。

我该如何纠正这个?

最佳答案

当 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

关于vba - Excel VBA 代码返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49673608/

相关文章:

excel - Excel 中的聚类

excel - 如何在 .BeforeClose() 事件上启动插件代码

mysql - 从 Excel 导入到 SQL,并有条件检查重复项

vba - 删除列的所有单元格中从 # 到结尾的字符(vba-EXCEL)

excel - 使用 excel 宏从网站上的图表中读取值

excel - 如何在不打开 Visual Basic 编辑器的情况下执行 VBA 代码

vba - 确定单击哪个命令按钮以打开用户窗体

C# Open XML SDK 2.0 Excel 电子表格 - 从字符串数组加载单元格范围

excel - 在带有 UDF 的单元格公式中使用内置枚举

Excel VBA函数无法设置范围