Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1320to1324
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

CommandButtons wechselseitig verändern

CommandButtons wechselseitig verändern
09.07.2013 10:01:50
Ali
Hallo zusammen,
habe da ein Problem wo ich mit meinen bescheidenen VBA-Kenntnissen nicht weiter komme. Ich habe _ eine Arbeitsmappe mit mehreren Spalten in der Autofilter aktiviert sind. Mit Hilfe von CommandButtons setze ich die jeweiligen Filter auf die jeweiligen Kriterien die ich filtern will. Jetzt habe ich zwei Buttons, die auf einen Filter verweisen und dort nach zwei unterschiedlichen Kriterien filtern. Also Button 1 setzt den Autofilter in Spalte 1 auf "DE". Button 2 setzt den Autofilter in Spalte 1 nach "BG". Je nachdem wie die Filter gesetzt sind ändert sich auch die Farbe der jeweiligen Buttons (Grün für Button an und Rot für aus). Unabhängig voneinander funktioniert soweit alles. Jetzt will ich jedoch, dass Button 1 auf Rot gesetzt wird, wenn ich Button 2 drücke und umgekehrt. Die Filter sollen dann direkt auf das jeweilige Kriterium springen. Anbei den Code den ich mir mittlerweile zusammengebastelt habe:

Private Sub CommandButton1_Click()
Dim oWS As Worksheet
Set oWS = ActiveSheet
If ActiveSheet.AutoFilterMode Then
With oWS.AutoFilter
If .Filters(1).On Then
.Range.AutoFilter Field:=1
CommandButton1.BackColor = RGB(255, 0, 0)
Else
.Range.AutoFilter Field:=1, Criteria1:="DE"
CommandButton1.BackColor = RGB(0, 255, 0)
End If
End With
End If
End Sub

Private Sub CommandButton2_Click()
Dim oWS As Worksheet
Set oWS = ActiveSheet
If ActiveSheet.AutoFilterMode Then
With oWS.AutoFilter
If .Filters(1).On Then
.Range.AutoFilter Field:=1
CommandButton2.BackColor = RGB(255, 0, 0)
Else
.Range.AutoFilter Field:=1, Criteria1:="BG"
CommandButton2.BackColor = RGB(0, 255, 0)
End If
End With
End If
End Sub

Das Beispiel ist mit zwei Buttons. Später sollen noch weitere Buttons, die auf den gleichen Filter verweisen, hinzukommen. Ich weiss das ich evtl. ein Toggle Button verwenden könnte. Jedoch will ich das aufgrund der Farbeinstellungen nicht machen und bei den CommandButtons bleiben.
Ich danke im Vorfeld für jede Hilfe.
Gruß Ali

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CommandButtons wechselseitig verändern
09.07.2013 11:28:36
Klaus
Hi,
du kannst die Commandbutton überall ansprechen, nicht nur innerhalb ihrers On-Click!
Private Sub CommandButton1_Click()
Dim oWS As Worksheet
Set oWS = ActiveSheet
If ActiveSheet.AutoFilterMode Then
With oWS.AutoFilter
If .Filters(1).On Then
.Range.AutoFilter Field:=1
CommandButton1.BackColor = RGB(255, 0, 0)
CommandButton2.BackColor = RGB(0, 255, 0)
Else
.Range.AutoFilter Field:=1, Criteria1:="DE"
CommandButton1.BackColor = RGB(0, 255, 0)
CommandButton2.BackColor = RGB(255, 0, 0)
End If
End With
End If
End Sub

Wenn du dir jetzt noch die Mühe machst deine Buttons umzubenennen, zb in "CmB_FilterKategorie" oder sowas, ist der Code dazu sogar lesbar und intutiv ...
Grüße,
Klaus M.vdT.

Anzeige
AW: CommandButtons wechselseitig verändern
09.07.2013 11:51:35
Ali
Hallo Klaus,
zunächst vielen Dank für deine Anmerkung. Das mit dem Farbwechsel klappt jetzt prima. Jedoch muss ich zweimal auf den jeweiligen anderen Button klicken, bis er nach dem definierten Kriterium filtert. Beim ersten Klick setzt der den Filter nur zurück. Brauche das so wie bei mehreren OptionBox-Feldern.
Danke und Gruß
Ali

Bahnhof?
09.07.2013 11:54:28
Klaus
Hallo Ali,
ich habe mir deinen Code nicht angeschaut, da deine Frage nur über das einfärben von CommandButtons ging.
Wenn du fragen zum Code an sich hast, lad bitte eine Mustertabelle hoch. Wenn du es brauchst "wie bei mehreren OptionBox Feldern", warum nimmst du dann nicht einfach OptionBox-Felder?
Grüße,
Klaus M.vdT.

Anzeige
AW: Bahnhof?
09.07.2013 12:27:54
Ali
Hallo Klaus,
habe es jetzt selber geschafft worauf ich hinaus wollte. Das mit dem Farbwechsel hat mir trotzdem weitergeholfen. Vielen Dank nochmal.
Für alle diejenigen, die an der Lösung Interesse haben, hier der Code:
Private Sub CommandButton1_Click()
'Filtern nach DE
Dim oWS As Worksheet
Set oWS = ActiveSheet
If ActiveSheet.AutoFilterMode Then
Selection.AutoFilter Field:=1, Criteria1:="DE"
CommandButton1.BackColor = RGB(0, 255, 0)
CommandButton2.BackColor = RGB(255, 0, 0)
CommandButton3.BackColor = RGB(255, 0, 0)
End If
End Sub

Private Sub CommandButton2_Click()
'Filtern nach BG
Dim oWS As Worksheet
Set oWS = ActiveSheet
If ActiveSheet.AutoFilterMode Then
Selection.AutoFilter Field:=1, Criteria1:="BG"
CommandButton2.BackColor = RGB(0, 255, 0)
CommandButton1.BackColor = RGB(255, 0, 0)
CommandButton3.BackColor = RGB(255, 0, 0)
End If
End Sub

Private Sub CommandButton3_Click()
'Filter zurücksetzen
Dim oWS As Worksheet
Set oWS = ActiveSheet
If ActiveSheet.AutoFilterMode Then
Selection.AutoFilter Field:=1
CommandButton3.BackColor = RGB(0, 255, 0)
CommandButton2.BackColor = RGB(255, 0, 0)
CommandButton1.BackColor = RGB(255, 0, 0)
End If
End Sub

Anzeige
Danke für die Rückmeldung! owT.
09.07.2013 12:30:58
Klaus
.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige