更改单元格值时隐藏活动列

时间:2016-06-09 12:54:15

标签: excel vba excel-vba excel-2010

在过去的几天里,我一直在尝试自己解决这个问题,并且让自己向前迈出了一步,前进了三步。我一直不愿意打扰你,以为在此之前它会在其他地方得到解答。

我的想法是,我有一个电子表格,其行中的条件包含行中的单独条目;在第6行中,它是每个列条目的状态,当更改为“已完成”时,我希望隐藏该列。

我一直在使用Worksheet_Change,并且能够隐藏特定列,但不能隐藏活动列。

我们非常感谢所提供的任何帮助,如果其他地方已经提及,我很抱歉,但我无法成功应用任何示例。

感谢。

2 个答案:

答案 0 :(得分:2)

每当你必须使用worksheet_change事件时,你必须考虑一个循环,因为用户可能会同时删除多个数据或进行复制粘贴,如果你只考虑“目标”它会给一个调试器错误。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ItemMultipleData As Range
For Each ItemMultipleData In Target 'handles multiple cells, paste, del, etc
'your code (instead of using "Target" change to ItemMultipleData. IE:
'If ItemMultipleData.Value = "Completed" Then
Next ItemMultipleData 
End Sub

答案 1 :(得分:1)

这是一个起点。它只检查#strong <6> 行

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Set rng = Range("6:6")

    If Intersect(Target, rng) Is Nothing Then Exit Sub
    If Target.Count <> 1 Then Exit Sub
    If Target.Value = "Completed" Then
        Application.EnableEvents = False
            Target.EntireColumn.Hidden = True
        Application.EnableEvents = True
    End If
End Sub

修改#1:

这种方法假设一次只有一个单元格被改变........这使得“找到活动单元格”变得容易