1
我有6個用戶窗體其彈出,並請您選擇您要排序的變量:用戶窗體設置多個篩選條件
- ClientFilter
- CostCenterFilter
- UtilityFilter
- TypeOfWorkfilter
- AnalystFilter
- ProjMgrFilter
在每個變量中使用if語句。
Sub UpdateCF()
Integer_CF = -1
If AU_CF.Value = True Then
Add_CF String_CF, "AU"
Range("$B$6:$AU$68").AutoFilter _
Field:=2, Criteria1:=String_CF, _
Operator:=xlFilterValues
End If
If AULaw_CF.Value = True Then
Add_CF String_CF, "AULAW"
Range("$B$6:$AU$68").AutoFilter _
Field:=2, Criteria1:=String_CF, _
Operator:=xlFilterValues
End If
...
End Sub
Sub Add_CF(String_CF() As String, NewValue As String)
Integer_CF = Integer_CF + 1
ReDim Preserve String_CF(Integer_CF)
String_CF(Integer_CF) = NewValue
End Sub
這工作正常,除了我想能夠排序在多個領域。例如,我希望使用客戶端篩選器,然後選擇一個變量,然後使用成本中心用戶窗體同時啓用這兩種排序。
我會把這個模塊中,並從用戶論壇調用或將其放置在每一個用戶窗體 –
@MichaelDowney這取決於你的對象模型。有些人喜歡在他們的用戶表單中放置「商業」邏輯。我更願意使用用戶表單來計算「參數」,例如對於你的情況 - 指示AULAW過濾器是否應該打開的屬性設置爲true,然後調用用戶表單的「main」過程從這些屬性中拾取所需的參數,並調用實際設置過濾器的相關過程。這樣你集中了'業務邏輯',每個特殊的過濾器用戶表單都以相同的方式工作。 –
@MichaelDowney也可以使用與您已經使用過的相同原理 - >可以使用相同的原則來設置基於多個字段的過濾器。我上面的代碼只是一個演示。你已經正確地製作過濾器值數組等:) –