Hi Achim,
(15.08.2014, 13:47)maine-coon schrieb: [ -> ]Nehme ich jetzt eine CB, habe ich das Problem, dass die CB im Gegensatz zum OB eine UND Sache ist. Ich kann ja mehre CB anwählen, ohne das eine andere CB deaktiviert wird. Keine gute Lösung.
Nehme ich einen TB, wäre das schon etwas besser. Ich klicke auf TB1 und lasse dabei automatisch die anderen 5 TB wieder auf FALSE stellen. Irgendwie auch nicht das wahre.
Jetzt muss es doch möglich sein beim nächsten Klick auf den OB das Ereignis wieder aufzurufen, aber dieses Mal mit Sortierung Abwärts und als OB.caption = "Abwärts" zu erhalten.
zum Ersten: ich habe hier irgendwo etwas angefragt mit drei CB pro Zeile in vielen Zeilen untereinander, bei der immer nur die CB in einer Zeile miteinander verknüpft/gruppiert sind. Such mal, wie das per VBA gelöst ist. Wenn Du die CB also "ODER" verknüpft haben willst, dann mußt Du sie nur gruppieren.
zum Zweiten: warum sollten beim Klick auf TB1 die anderen 5 TB automatisch auf FALSE gestellt werden, wenn Du das nicht explizit so programmierst? Du kannst doch jeden TB unabhängig vom anderen auf TRUE oder FALSE stellen.
Code:
Option Explicit
Private Sub ToggleButton1_Click()
If Me.ToggleButton1.Value = False Then
'Dein Sortier-Code 1 ' Aufwärts
Me.ToggleButton1.Caption = "Abwärts Sortieren"
Else
'Dein Sortier-Code 2 ' Abwärts
Me.ToggleButton1.Caption = "Aufwärts Sortieren"
End If
End Sub
Code:
Private Sub ToggleButton1_Click()
If ToggleButton1 Then
'Dein Sortier-Code 1 ' Aufwärts
ToggleButton1.Caption = "Abwärts Sortieren"
Else
'Dein Sortier-Code 2 ' Abwärts
ToggleButton1.Caption = "Aufwärts Sortieren"
End If
End Sub
Code:
Option Explicit
Private Sub ToggleButton1_Click()
Dim Sort_A As String
Dim Sort_B As String
Dim Sort_C As String
Sort_A = "D4"
Sort_B = "A4"
Sort_C = "W4"
If ToggleButton1 Then
With Worksheets("Auswahl").Range("A4:DS10000")
.Sort Key1:=Range(Sort_A), Order1:=xlAscending, _
Key2:=.Range(Sort_B), Order2:=xlAscending, _
Key3:=.Range(Sort_C), Order3:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
End With
ToggleButton1.Caption = "Abwärts Sortieren"
Else
With Worksheets("Auswahl").Range("A4:DS10000")
.Sort Key1:=Range(Sort_A), Order1:=xlDescending, _
Key2:=.Range(Sort_B), Order2:=xlAscending, _
Key3:=.Range(Sort_C), Order3:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
End With
ToggleButton1.Caption = "Aufwärts Sortieren"
End If
With Worksheets("Auswahl")
ListBox1.RowSource = "Auswahl!" & .Range(.Cells(4, 1), .Cells(n + 3, 125)).Address
End With
End Sub
[
attachment=451]
ich glaube, so kannst Du noch den verschiedenen TB unterschiedliche Werte zuweisen:
Code:
Private Sub ToggleButton6_Click()
ToggleButton1 = TRUE
ToggleButton2 = FALSE
ToggleButton3 = Not ToggleButton6
ToggleButton4 = Not ToggleButton6
ToggleButton5 = Not ToggleButton6
End Sub
Du kannst diese Zeilen bei Bedarf auch in die einzelnen TBs reinsetzen, dann passiert das, was Du oben als "nicht das wahre" beschrieben hast.
zum Dritten: evtl. könntest Du über eine zusätzliche Variable ("Auf" - "Ab"), die beim Klicken auf den OB abgefragt wird, die Richtung auslesen und dann in einer IF-Else-Entscheidung entweder aufwärts oder abwärts sortieren und dann die Variable für den nächsten Klick entsprechend setzen.
Und das ist genau das, was der TB auto-"magisch" macht, ohne es extra zu programmieren.