私が設定したこのコードを使用して、チェックボックスを備えたユーザーフォームと相関して機能し、フィルタリングするものを選択するフィルターを使用しています。現在、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 つの列をソートできるようにしたいと考えています。エネルギーで言ってから、ワークタイプで並べ替えます。