使用Excel 2010,我正在编辑一个现有的不受保护的工作簿,并已在EntireColumn.Hidden事件中的命令中创建了EntireRow.HiddenWorksheet_Change(),以在更改数据验证单元格时触发,但它们不起作用。

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时,它说无法插入对象,即使是全新的空白的书。这可能是一个相关的问题吗?

最佳答案

我想您在单元格C3中有一个下拉列表,其中有两个项目,即“可见”和“不可见”。
当您将范围C3的值从空白/“可见”更改为“不可见”时,以下代码将隐藏列N和O。在执行此操作之前,您必须阅读该消息,然后单击“确定”。从“不可见”更改为“可见”将显示一个消息框。单击确定,并看到隐藏的列显示自己。

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

关于excel - EntireColumn.Hideden在Worksheet_Change()中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30725920/

10-09 04:46