我想创建一个宏来查看命名单元格范围的值,并根据该命名单元格中的值隐藏/取消隐藏单元格。 我有一个数据验证列表,可以选择(a)是和(b)否,如果用户选择命名单元格“选择”(单元格“A1”)然后(a)是,则必须隐藏行5-10否则他们必须被取消隐藏。 宏不需要查看和整个单元格值,如“(a)是”,它只能看“(a)”
到目前为止,这是我的代码,但它会产生一个错误,表示
对象变量或未设置块变量
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
Cell = Range("Select")
If Target.Address = Cell Then
Select Case Left$(Cell.Value, 3)
Case "(a)"
Rows("5:10").Hidden = True
End Select
Else
Rows ("5:10").Hidden = False
End If
End Sub
如何做这样的事情?
答案 0 :(得分:1)
更改以下内容:
Cell = Range("Select")
成:
Set Cell = Range("Select")
此外,如果您比较,则不会得到预期的结果:
Target.Address = Cell
永远不会满足。请尝试以下方法:
Target.Address = Cell.Address
还有一个建议。您可以将if
和select
条件合并为一个:
If Target.Address = Cell.Address And Left$(Cell.Value, 3) = "(a)" Then
最后,请记住“(a)”<> “(A)”由于VBA的案例敏感性。