Hey Markus,
also dazu gibt's ja nun wirklich genügend Infomaterial im Netz. Das Schlüsselwort heißt "Dynamisches Array". Schau dir dazu mal den Befehl Redim an.
Ich hab hier aber mal einen anderen Weg gewählt und bin über die String-Bearbeitung gegangen. Auf diese Weise lernst du gleich, wie man Strings verändern kann und wie man eigene Funktionen verwendet. So musst du dich noch nicht unbedingt mit der Erstellung von Arrays rumschlagen.
Private Sub idFirmaAAusblenden_Click()
Ausblenden
End Sub
Private Sub idFirmaBAusblenden_Click()
Ausblenden
End Sub
Private Sub idFirmaCAusblenden_Click()
Ausblenden
End Sub
Private Sub idFirmaDAusblenden_Click()
Ausblenden
End Sub
Private Sub idFirmaEAusblenden_Click()
Ausblenden
End Sub
Sub Ausblenden()
Dim farr() As String 'filtered array
Dim arrstr As String, companies As String
companies = "UnternehmenA,UnternehmenA2,UnternehmenB,UnternehmenB2,UnternehmenC,UnternehmenC2,UnternehmenD,UnternehmenD2,UnternehmenE,UnternehmenE2,UnternehmenE3"
arrstr = companies
If idFirmaAAusblenden Then
arrstr = Entf(arrstr, "UnternehmenA")
arrstr = Entf(arrstr, "UnternehmenA2")
End If
If idFirmaBAusblenden Then
arrstr = Entf(arrstr, "UnternehmenB")
arrstr = Entf(arrstr, "UnternehmenB2")
End If
If idFirmaCAusblenden Then
arrstr = Entf(arrstr, "UnternehmenC")
arrstr = Entf(arrstr, "UnternehmenC2")
End If
If idFirmaDAusblenden Then
arrstr = Entf(arrstr, "UnternehmenD")
arrstr = Entf(arrstr, "UnternehmenD2")
End If
If idFirmaEAusblenden Then
arrstr = Entf(arrstr, "UnternehmenE")
arrstr = Entf(arrstr, "UnternehmenE2")
arrstr = Entf(arrstr, "UnternehmenE3")
End If
If arrstr = "" Then
Tabelle6.Range("$B$3:$V$200").AutoFilter Field:=1, Criteria1:="=""""", Operator:=xlAnd
ElseIf arrstr = companies Then
Tabelle6.Range("$B$3:$V$200").AutoFilter Field:=1
Else
farr = Split(arrstr, ",")
Tabelle6.Range("$B$3:$V$200").AutoFilter Field:=1, Criteria1:=farr, Operator:=xlFilterValues
End If
End Sub
Private Function Entf(Expression As String, Find As String) As String
Entf = Expression
If Left(Entf, Len(Find) + 1) = Find & "," Then Entf = Right(Entf, Len(Entf) - Len(Find) - 1)
If Right(Entf, Len(Find) + 1) = "," & Find Then Entf = Left(Entf, Len(Entf) - Len(Find) - 1)
Entf = Replace(Entf, "," & Find & ",", ",")
If Entf = Find Then Entf = ""
End Function
Aber warum blendest du lieber 4 Firmen über Checkboxen aus, anstatt nur eine über ein Optionsfeld einzublenden? Bei der Aktivierung eines Optionsfeldes werden alle anderen Optionsfelder automatisch deaktiviert, womit dann das Ein- und Ausblenden quasi wie von Geisterhand geht. Wäre eine Überlegung wert.
Gruß Mr. K.
|