0

私が設定したこのコードを使用して、チェックボックスを備えたユーザーフォームと相関して機能し、フィルタリングするものを選択するフィルターを使用しています。現在、Utilities のような 1 つの変数をフィルター処理するとフィルター処理されますが、別のフィルターに移動すると Clients と言うと、以前にフィルター処理された特定のユーティリティに関連付けられたクライアントを提供する代わりにフィルター処理を行い、すべてをクリアしてクライアントのみをフィルター処理します。

私は解決策がメソッドに対処しなければならないかもしれないと考えています: .SpecialCells(xlCellTypeVisible)

Private Sub Cancel_UF_Click()
    UtilityFilter.Hide
    Range("A1").Select
End Sub

Private Sub Confirm_UF_Click()
    ActiveSheet.Unprotect ("UMC626")
    ClearFilter
    UpdateFilters
    UtilityFilter.Hide
    Application.ScreenUpdating = False
    Range("A1").Select
    ActiveSheet.Protect Password:="UMC626", _
                        DrawingObjects:=False, _
                        Contents:=True, _
                        Scenarios:=True
End Sub

Sub SelectAll_UF_Click()
    If SelectAll = True Then
        Electricty_UF.Value = True
        Gas_UF.Value = True
        NonUtility_UF.Value = True
        SolarElectricity_UF.Value = True
        SolarThermal_UF.Value = True
        SolidWaste_UF.Value = True
        Water_UF.Value = True
    Else
        Electricity_UF.Value = False
        Gas_UF.Value = False
        NonUtility_UF.Value = False
        SolarElectricity_UF.Value = False
        SolarThermal_UF.Value = False
        SolidWaste_UF.Value = False
        Water_UF.Value = False
    End If
End Sub

Sub UpdateFilters()
    Integer_UF = -1

    If Electricity_UF.Value = True Then
        Add_UF String_UF, "E"
        Range("E6:E67").AutoFilter Field:=1, _
                                   Criteria1:=String_UF, _
                                   Operator:=xlFilterValues
    End If

    If Gas_UF.Value = True Then
        Add_UF String_UF, "G"
        Range("E6:E67").AutoFilter Field:=1, _
                                   Criteria1:=String_UF, _
                                   Operator:=xlFilterValues
    End If

    If NonUtility_UF.Value = True Then
        Add_UF String_UF, "NU"
        Range("E6:E67").AutoFilter Field:=1, _
                                   Criteria1:=String_UF, _
                                   Operator:=xlFilterValues
    End If

    If SolarElectricity_UF.Value = True Then
        Add_UF String_UF, "SE"
        Range("E6:E67").AutoFilter Field:=1, _
                                   Criteria1:=String_UF, _
                                   Operator:=xlFilterValues
    End If

    If SolarElectricity_UF.Value = True Then
        Add_UF String_UF, "SE"
        Range("E6:E67").AutoFilter Field:=1, _
                                   Criteria1:=String_UF, _
                                   Operator:=xlFilterValues
    End If

    If SolarThermal_UF.Value = True Then
        Add_UF String_UF, "ST"
        Range("E6:E67").AutoFilter Field:=1, _
                                   Criteria1:=String_UF, _
                                   Operator:=xlFilterValues
    End If

    If SolidWaste_UF.Value = True Then
        Add_UF String_UF, "SW"
        Range("E6:E67").AutoFilter Field:=1, _
                                   Criteria1:=String_UF, _
                                   Operator:=xlFilterValues
    End If

    If Water_UF.Value = True Then
        Add_UF String_UF, "W"
        Range("E6:E67").AutoFilter Field:=1, _
                                   Criteria1:=String_UF, _
                                   Operator:=xlFilterValues
    End If
End Sub

Sub Add_UF(String_UF() As String, NewValue As String)
    Integer_UF = Integer_UF + 1
    ReDim Preserve String_UF(Integer_UF)
    String_UF(Integer_UF) = NewValue
End Sub

NewValue を呼び出している Add_UF に焦点を当てる必要があると思います。ソートされた後に列をソートする方法はありますか? 下の図でわかるように、1 つの列をソートできるようにしたいと考えています。エネルギーで言ってから、ワークタイプで並べ替えます。ここに画像の説明を入力

4

1 に答える 1