簡體   English   中英

基於復選框過濾行

[英]Filtering Row based off checkbox

我有一些VBA代碼,打算用來過濾而不是 盡管有些問題似乎無法解決,但我現在還是感到困惑。

Sub FilterRow()
    Dim b As Object, cs As Integer
    Set b = ActiveSheet.CheckBoxes(Application.Caller)
    With b.TopLeftCell
        cs = .Row
    End With

    Dim rng As Range, cel As Range, totalRng As Range
    If ActiveSheet.AutoFilterMode = True Then
        ActiveSheet.AutoFilterMode = False
    End If

    For Each cel In totalRng
        If cel.Row <> cs Then
            cel.EntireColumn.Hidden = True
        Else
            cel.EntireColumn.Hidden = False
        End If
     Next cel

End Sub

我們的目標是有碼校驗 C:在特定的DX的值,如果值沒有找到,然后隱藏該列。 最終消除該特定行中的任何空白單元格。

因此,假設FilterRow是您已分配給該復選框的宏,以下將完成我認為您要嘗試做的事情:

Sub FilterRow()
    Dim b As Object, cs As Integer
    Set b = ActiveSheet.CheckBoxes(Application.Caller)

    With b.TopLeftCell
      cs = .row
    End With

    Dim rng As Range, cel As Range, totalRng As Range
    Set totalRng = Range("C" & cs & ":DX" & cs)

    If b.Value = 1 Then
      If ActiveSheet.AutoFilterMode = True Then
         ActiveSheet.AutoFilterMode = False
      End If

      For Each cel In totalRng
         If cel.Value = "" Then
            cel.EntireColumn.Hidden = True
         Else
            cel.EntireColumn.Hidden = False
         End If
      Next cel
    Else
      ' Set up autofilter here
      totalRng.EntireColumn.Hidden = False
    End If

End Sub

由於此宏是在復選框處於選中狀態或未選中狀態時觸發的,因此我更改了邏輯,以使其在取消選中復選框時取消隱藏所有列(即,與選中時相反)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM