excel - 我的 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
解决方案
更改With ActiveSheet
为With Me
并指定Me
类似Range
(Me.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,这是一个非常相似的主题。
推荐阅读
- excel - 工作表选择更改的错误处理程序
- java - Java Spring App - RequestParam 映射为我自己的对象
- python - Pygame不更新键盘事件,只更新鼠标
- javascript - 无法在反应中解构变量
- angularjs - 运行函数时出现“ReferenceError:未定义角度”?
- mysql - SQL 查询至少 3 个不等于 CHAR
- sql - 从一列计算记录,其中值不同
- jquery - 页面在 jQuery 中轻微滚动时跳转
- bash - 在 Jenkins 中如何使用带有交叉编译环境的 Docker 镜像
- android - 安卓导航。从嵌套图片段弹出到外部片段