【问题标题】:Excel VBA Show/Hide table columns based on a specified cell valueExcel VBA 根据指定的单元格值显示/隐藏表列
【发布时间】:2023-01-17 17:33:54
【问题描述】:

我正在尝试根据同一工作表上单元格 C11 中的数字值显示表格中的多个列。

数据当前在表中,但如果有帮助,则不一定。

单元格 C11 包含多个星期,即“6”,范围“标题”包括周数(此范围是“Table1”的标题范围)。

列数从来都不是固定数量,它是根据 C11 的值动态变化的。

到目前为止,我已经尝试了两个脚本,但都没有做任何事情:

1 -

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rHdr As Range, rHdrs As Range
Dim strFirstAddr As String
If Target.Address <> "$C$11" Then Exit Sub
Set rHdr = Range("Headers").Find(Target.Value, LookIn:=xlFormulas)
If Not rHdr Is Nothing Then
    strFirstAddr = rHdr.Address
    Set rHdrs = rHdr
    Do
        Set rHdrs = Application.Union(rHdrs, rHdr)
        Set rHdr = Range("Headers").FindNext(rHdr)
    Loop Until rHdr.Address = strFirstAddr
    Range("Headers").EntireColumn.Hidden = True
    rHdrs.EntireColumn.Hidden = False
End If

End Sub

2 -

Sub HideColumns()
Dim p As Range

    For Each p In Range("Headers").Cells
        If p.Value < C11 Then
            p.EntireColumn.Hidden = True
        End If
    Next p
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    你能试试这个让我知道它是否有效吗?我不太了解您的方法,但这对我有用。只需在宏的顶部指定您的 controlCell 和 tableToHide(您试图控制的表格)。

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim controlCell As Range, tableToHide As Range
        Set controlCell = Range("G1")
        Set tableToHide = Range("Table1")
        
        If Target = controlCell Then
            tableToHide.EntireColumn.Hidden = False
            For i = controlCell.Value + 1 To tableToHide.Columns.Count
                tableToHide.Columns(i).EntireColumn.Hidden = True
            Next i
        End If
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-03
      • 2016-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多