首页 > 解决方案 > 我的 Excel“运行时错误 91:对象变量或未设置块变量”

问题描述

我明白了

运行时错误 91:对象变量或未设置块变量

当我从云存储位置打开我的程序时,它会打开警告问题“启用内容”。当我单击启用时出现错误 91。如果我从我的计算机打开没有问题。我确实需要能够从云存储位置下载并打开。我的代码如下。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Application.ScreenUpdating = True

 With ActiveSheet
    .Cells.Interior.ColorIndex = xlNone
    If Target.Rows.Count = 1 Then
    Range("A" & Target.Row, "J" & Target.Row).Interior.ColorIndex = 27
    End If
End With

End Sub

标签: excelvba

解决方案


更改With ActiveSheetWith Me并指定Me类似RangeMe.Range或使其使用 with 语句并以点 like 开头.Range)。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)    
    Application.ScreenUpdating = True

    With Me
        .Cells.Interior.ColorIndex = xlNone
        If Target.Rows.Count = 1 Then
             .Range("A" & Target.Row, "J" & Target.Row).Interior.ColorIndex = 27
        End If
    End With    
End Sub

为什么这是一个重要的区别?

ActiveSheet是代码运行时具有焦点(位于顶部)的工作表。但这不一定是触发事件的工作表或Target所在的工作表。因此您尝试更改不同工作表的颜色。避免ActiveSheet不惜一切代价使用。在大多数情况下,它是不需要的(除非在极少数情况下,例如,如果您编写插件或类似的东西)。

您可能会受益于阅读 如何避免在 Excel VBA 中使用 Select,这是一个非常相似的主题。


推荐阅读