最终,当焦点离开工作簿时,我正在尝试突出显示单元格。
这是我的代码(在ThisWorkbook
中):
Public s As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
s = Selection
End Sub
Private Sub Workbook_Deactivate()
s.Interior.ColorIndex = xlColorIndexNone
s.Interior.Color = RGB(0, 0, 0)
End Sub
Private Sub Workbook_Activate()
s.Interior.ColorIndex = xlColorIndexNone
s.Interior.Color = RGB(100, 204, 204) ' Blue
End Sub
但我遇到的第一个s.Interior.ColorIndex
收到错误:
Object variable or With block variable not set
以下是我的环境的一些图片:
Sheet 1中 like in this example on PHP.net
答案 0 :(得分:1)
有一些问题:
1)为了在整个项目中可见,公共变量声明必须在标准代码模块中。这样一行
Public s As Range
不应该在ThisWorkbook
中,但应该在标准代码模块中。
2)s = Selection
应更改为Set s = Selection
3)子
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set s = Selection
End Sub
应该在一个工作表模块中(并为您想要的每个工作表重复)。在ThisWorkbook
中使用它不是语法错误,但它不会按预期工作。
4)假设s
或activate
被触发时定义deactivate
是危险的。你应该防范这一点。类似的东西:
Private Sub Workbook_Activate()
If s Is Nothing Then
Set s = Selection
Exit Sub
End If
s.Interior.ColorIndex = xlColorIndexNone
s.Interior.Color = RGB(100, 204, 204) ' Blue
End Sub
Deactivate
的类似内容。