使用Excel 2010我正在编辑现有的不受保护的工作簿,并在EntireColumn.Hidden
事件中的命令中创建了EntireRow.Hidden
和Worksheet_Change()
,以便在更改数据验证单元格时触发,但是他们不会#39; t work。
Private Sub Worksheet_Change(ByVal Target As Range)
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
If Not Intersect(Target, Range("$C$2")) Is Nothing Then
Select Case Target.Value
Case "NO"
MsgBox "You just changed to HIDE" '<= Proves it fires
Range("$C$3").Value = "Invisible" '<= Does change cell
Columns("N:O").EntireColumn.Hidden = True '<= Doesn't hide
Case "YES"
MsgBox "You just changed to UNHIDE" '<= Proves it fires
Range("$C$3").Value = "Visible" '<= Does change cell
Columns("N:O").EntireColumn.Hidden = False '<= Doesn't unhide
End Select
End If
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
事件正在解雇,因为我有MsgBox
来证明这一点。我可以更改单元格值等,但不能更改列/行的隐藏/取消隐藏。
我已将我的代码复制到一本新书中并且有效。所以我把它复制回原版书中,但作为一张新的,空白的表格,它的作品。它仍然没有在原始的,相当大的表格中工作。
当我将其复制到一个简单的宏中时,会按需要工作,隐藏正确的列,但只需按一下按钮:
Sub HideThem()
Columns("N:O").EntireColumn.Hidden = True '<= DOES work
End Sub
我需要根据单个单元格的值自动更新。我甚至试图在Sub
事件中调用此迷你Worksheet_Change()
,但这也不起作用。
是否存在与其他命令/事件,片上按钮,图像,合并单元格等可能阻止列/行隐藏的已知冲突?
我尝试使用CheckBox
代替YES/NO
数据验证单元格来激活代码(因为这可以接受),但是当我尝试插入ActiveX CheckBox
时,它说无法插入对象,即使是在一本全新的空白书中也是如此。这可能是一个相关的问题吗?
答案 0 :(得分:0)
我想你在单元格C3中有一个下拉列表,其中包含两个项目,即&#34; Visible&#34;和&#34;隐形&#34;。 当您从空白/&#34;可见&#34;更改范围C3的值时,以下代码将隐藏列N和O.到&#34; Invisible&#34;。在此操作之前,您必须阅读该消息并单击“确定”。改变&#34; Invisible&#34;到&#34;可见&#34;将为您提供一个消息框。单击“确定”,看到隐藏的列显示自己。
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("C3") = "Invisible" Then
MsgBox ("You just changed to HIDE")
Columns(14).Hidden = True
Columns(15).Hidden = True
Else
If Range("C3") = "Visible" Then
MsgBox ("You just changed to UNHIDE")
Columns(14).Hidden = False
Columns(15).Hidden = False
End If
End If
End Sub