“我的Excel”;运行时错误91:对象变量或未设置块变量;

“我的Excel”;运行时错误91:对象变量或未设置块变量;,excel,vba,Excel,Vba,我明白了 运行时错误91:未设置对象变量或带块变量 当我从云存储位置打开我的程序时,它打开时会出现警告问题“启用内容”。当我单击“启用”时,会出现错误91。如果我从我的计算机打开,则不会出现问题。我确实需要能够从云存储位置下载和打开。我的代码如下 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.ScreenUpdating = True With ActiveSheet .Ce

我明白了

运行时错误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

将带有ActiveSheet的
更改为带有Me的
并为
范围指定
Me
,如
Me.Range
(或使其使用With语句,并以类似点的
.Range
开头)

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

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

你可能会从阅读中受益
这是一个非常相似的主题。

a)哪一行产生错误?b)将使用ActiveSheet
更改为使用Me
并为
范围指定
Me
,如
Me.Range
。错误发生在第4行。Cells.Interior.ColorIndex=xlNone“即使在我建议的更改之后,我还是用Activesheet代替了我。在我之后添加了Me.Range,并在.Range???处收到编译错误????更改为Me.Range(“A”和Target.Row,“J”和Target.Row).Interior.ColorIndex=27。它似乎工作正常。谢谢您的帮助。请将其作为答案写下来,以便您可以将其视为已解决。@jceast7如果这回答了您的问题,请追加投票/将其标记为已解决:
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