Ich erstelle ein Programm, um einige Filter aus einem UserForm (aber es gibt viele UserForms) mit Kontrollkästchen. Das Programm funktioniert wie folgt:Rufen Sie verschiedene UserForms in einem Programm
- einige Ankreuzfelder aus einer Userform wählen
- ein Command Klicken namens Next
- Die Filter Lasten mit dem folgenden Code:
Excel-VBA-Code
Sub Filtrarvar(ByVal j As Integer, ByVal k As Integer, _
ByVal col As Integer, ByVal Userf As String)
Dim Countercheck As Integer
Countercheck = 0
i = j
n = j
Dim Lista() As String
longitud = k - j
ReDim Lista(longitud)
Do While i <= k
If UserForm2.Controls("CheckBox" & i).Value = True Then
ContaTic = ContaTic + 1
End If
i = i + 1
Loop
If ContaTic = 0 Or ContaTic = longitud + 1 Then
Sheets("Aux_total").Range(Cells(1, 1), _
Cells(UltLinea, UltColumna)).AutoFilter Field:=col, Criteria1:="<>"
ElseIf ContaTic >= 1 Then
arr = 0
Do While n <= k
If UserForm2.Controls("CheckBox" & n).Value = True Then
Value = UserForm2.Controls("CheckBox" & n).Caption
Lista(arr) = Value
arr = arr + 1
End If
n = n + 1
Loop
Sheets("Aux_total").Range(Cells(1, 1), _
Cells(UltLinea, UltColumna)).AutoFilter Field:=col, Criteria1:=Lista, _
Operator:=xlFilterValues
End If
End Sub
Und ich möchte das Programm wie aufrufen dies:
Filtrarvar 1, 6, 4, "Europe"
Was ich möchte, ist wissen, wie UserForm2
-Europa, den Code zu ändern und so weiter? Ich möchte das für jedes UserForm/Continent tun.
1.) Erstellen Sie 1 Formular. 2.) Geben Sie ihr eine Eigenschaft für alles, was "Europa" in Ihrem Beispiel anzeigen würde (erwägen Sie eine "Enum"). 3.) Konfigurieren Sie das Formular zur Laufzeit auf der Grundlage des übergebenen Eigenschaftswerts, bevor Sie es "anzeigen". 4.) Erzeuge [harte Instanzen anstelle der Standardinstanz] (http://stackoverflow.com/documentation/vba/5351/user-forms/19036/best-practices#t=201611212133242937607). – Comintern