Mehrere OptionButton mit CommandButton nacheinander durchschalten
#1
Hi, nun ist es mittlerweile halb drei Uhr morgens und ich sitze immer noch vor dem Pc auf der Suche nach einer Lösung für meine kleine Spinnerei.
Da ich mich vor lauter Sucherei mittlerweile aber kaum mehr konzentrieren geschweige etwas lesen kann und selbst einfach nicht weiter komme, bitte ich eben mal um Hilfe.

Ich habe mehrere OptionButton die keine einzelne Funktion zugewiesen haben, sondern lediglich quasi als Marker dienen sollen. Ähnlich einer Checkbox nur eben mit dem Feature dass immer nur eine Box angewählt ist ohne die anderen abwählen zu müssen. Diese OptionButtons möchte ich nun mit jedem Klick auf ein und demselben CommandButton nacheinander um eins weiter schalten. Bis der letzte wieder auf den ersten springt. 

Aber ich kriege das nicht hin. Ich bräuchte wohl irgend so was wie einen Next oder Loop Code den ich aber nirgends finden kann.

Könnt Ihr mir helfen wie ich das gebacken bekomme.

Besten Dank
Gruß
Top
#2
Hallo, :19:

hier mal mit Beispieldatei (sagt IMHO mehr als tausend Bilder/Erklärungen): :21:
[attachment=23447]
Top
#3
Für eine Userform könnte man es so lösen

Zitat:Option Explicit

Dim col As New Collection

Private Sub CommandButton1_Click()
    
    Dim i As Long

    For i = 1 To col.Count
        If i = col.Count Then
            col(1).Value = True
        Else
            If col(i).Value = True Then
                col(i + 1).Value = True
                Exit For
            End If
        End If
    Next i

End Sub

Private Sub UserForm_Initialize()

    Dim ctl As Control

    For Each ctl In Controls
        If TypeName(ctl) = "OptionButton" Then
                col.Add ctl, CStr(ctl.Name)
        End If
    Next
    
End Sub
Top
#4
Shocked 
Ich könnte Euch [img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]
Es funktioniert genau wie gewünscht! Als Datei natürlich extra komfortabel. [img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]

Würd mich echt mal interessieren woher Ihr all die Codes wisst. Das ist doch nicht durchschaubar das ganze VBA Zeugs.
Kann man sich sowas irgenwie irgendwo ab- oder herleiten? Es gibt ja doch auch immer tausend Möglichkeiten und Wege zum Ziel zu gelangen.
Aber dazu muss man ja zumindest mal wissen wo man überhaupt ansetzt. Und wie die Befehle lauten. Unverständlich das ganze für mich.

Besten Dank in jedem Fall!
Top
#5
Hallo,

Zitat:Würd mich echt mal interessieren woher Ihr all die Codes wisst.
Das ist doch nicht durchschaubar das ganze VBA Zeugs.


Kann man sich sowas irgenwie irgendwo ab- oder herleiten?
Es gibt ja doch auch immer tausend Möglichkeiten und Wege zum Ziel zu gelangen.

Aber dazu muss man ja zumindest mal wissen wo man überhaupt ansetzt.
Und wie die Befehle lauten. Unverständlich das ganze für mich.

also, mit einfachen Worten läßt sich das alles in einem Satz ausdrücken.
Es ist eine Sprache, und die muß man eben lernen.

Der einfachste und zudem auch noch kostenfreie Weg zum schnellen Lernen führt,
meiner bescheidenen Meinung nach, über das Mitmachen in Foren. Versuchen, die
hier erfragten Probleme mitzulösen und wenn man was weiß oder glaubt zu wissen,
seinen Lösungsvorschlag vorzustellen. 
Es wird Dich hier niemand auslachen, wir alle haben irgendwann mal angefangen.

Was das Einlesen angeht; das Internet ist groß und in den Foren mangelt es wohl
auch nicht wirklich an weiterführenden Links.

Und das mit den vielen Wegen ... ist ja richtig, aber im Laufe der Zeit wirst Du ganz
sicher für Dich selbst Deinen eigenen Weg finden.

Und fast hätte ich vergessen, Dich zu warnen:
Excel macht süchtig, aber im positivem Sinne  :05:
Top
#6
Tja, wenn man mal mitbekommen hat was mit Excel alles im Hintergrund, abseits des normalen Tabellenblattes alles möglich ist, dann erkennt man erst was das eigentlich für ein mächtiges Gerät ist. Mir war das nie klar bis ich vor zwei Jahren mal durch einen Bekannten darauf aufmerksam gemacht wurde, als er aus einer angeheiterten Stimmung heraus meinte wir bauen uns dafür unser eigenes kleines Programm zusammen. Und deshalb sitze ich heute Abend wieder hier, weil ich immer wieder Ideen habe, eben dieses kleine "Programm" von damals um kleine Gimmicks und Verbesserungen erweitern zu wollen. So viel zum Thema Excel macht süchtig.  Biggrinsmiley

Aber da wären wir auch gleich wieder beim Thema.  :21: 
Der genannte Code von Case funktioniert wunderbar, nur habe ich in meinem Arbeitsblatt einige Zeilen, die ich durch CheckBoxen ab und an ausblende. Und diese Zeilen werden wenn Sie ausgeblendet durch den Blattschutz übersprungen. So möchte ich das auch. 

Jeder von meinen o.g. OptionButtons gehört zu einer CheckBox, bzw. zu der damit verbundenen Zeilenreihe die ausgeblendet wird.
Nun sollte aber auch der OptionButton mit aktivierter CheckBox ausgeblendet und eben dann durch den aktivierten Blattschutz übersprungen werden.
Das ausblenden kriege ich hin, nur leider ist der OptionButton nach wie vor aktiv. Denn wenn ich mit dem CommandButton durch die OptionButton´s (dieser Begriff klingt in meinen Ohren immer dämlicher je häufiger ich ihn benutze) durch schalte, dann ist in dem Moment, in dem eine ausgeblendete Reihe übersprungen wird, kein (achtung, jetzt kommt er wieder) OptionButton angewählt. Zumindest nicht sichtbar, denn es wird dann nicht auf den nächsten nicht ausgeblendeten, sichtbaren OP zugegriffen, sondern auf den der ausgeblendet ist.


Ich bin nun am überlegen ob ich dieses irgendwie in mein CheckBox Makro, welches mir die Reihen ausblendet, integrieren kann!?!
Mein dafür verwendeter Code lautet:

Sub Kontrollkästchen33_Klicken()
Rows("10:12").Select
If Selection.EntireRow.Hidden = False Then
Selection.EntireRow.Hidden = True
Else
Selection.EntireRow.Hidden = False
End If
Range("$A$1").Select
End Sub



Verständlich erklärt soweit?
Top
#7
Hallo,

sage ich doch, Excel fordert immer wieder, ... da geht noch was, und ... mache es doch
aber es ist eine wunderbare Sucht.
Ok, Du hast zwar nicht direkt auf meine Frage nach Deinem VBA-Wissen geantwortet, aber
so ganz unbeleckt bist Du offensichtlich nicht.

Deine Datei kenne ich zwar immer noch nicht, aber eines weiß ich jetzt schon
Rows("10:12").Select
Es sind solche Dinge, die, wie ich schon vermutet hatte, Dein Programm so unverschämt
verlangsamen. Versuche unbedingt, Dir das mit dem .Select  abzugewöhnen. Ich weiß, es ist
verdammt schwer, sich das abzugewöhnen, aber es lohnt sich unbedingt.
Auch ich habe, als ich darauf hingewiesen wurde gesagt, für mich ist es erst mal wichtig, das
das Programm tut, was ich von ihm erwarte. Leider hat mir aber niemand den Tipp gegeben,
das Programm mal im Einzelschrittmodus laufen zu lassen. Diesen Tipp gebe ich Dir aber heute.
Du wirst feststellen, daß mit jedem .Select, das Gleiche gilt für .Activate, das Programm jedes
mal von Beginn an den Code noch einmal durchläuft.
Bei 10 [b].Selects hast Du dann quasi 10 Neustarts hingelegt, bevor Du auch nur einmal[/b]
das abschließende End Sub erreichst
Nun kannst Du wohl schon ahnen, warum Dein Makro sich so viel Zeit nimmt.
Aber probiere es ruhig mal aus, denn erst dann wirst Du es nicht nur gehört / gelesen haben.
In diesen Fall zeigt Dir in der richtigen Einstellung wirklich, wo bzw. wie der Bartel den Most holt.
Es wird ein heilsames Erlebnis werden, das verspreche ich Dir.
Nicht umsonst weisen die Helfer in den Foren immer wieder darauf hin, daß in 99% der Fälle
der Einsatz von .Select und .Activate unnötig ist und nur jede Menge Zeit verschwendet wird.

Also, einfach mal in den Editor gehen, im Code möglichst weit oben einen Haltepunkt setzen,
Du siehst dann an der linken Seite einen braunen Punkt, und das Programm starten. Mit der
F8-Taste durchläufst Du dann im Einzelschritt den Code und kannst mitverfolgen, wie das
Programm Anweisung für Anweisung nacheinander durchläuft und abarbeitet.

So, und nun will mein Kopfkissen unbedingt mit mir kuscheln.

Dir jedoch wünsche ich viel Spaß beim "Haare raufen". Hoffentlich sind nach dem Programm-
durchlauf noch welche da.  :05: :19: :05:
Top
#8
Hallöchen,

wenn der Code Sub Kontrollkästchen33_Klicken() heißt, ist er doch schon ein Checkbox-Makro?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#9
Die Überlegung war ob/wie ich in dieses CheckBox Makro die OptionButton Hidden Funktion hinzufügen kann...!?
Top
#10
Hallo, :19:

lade doch einfach eine Beispieldatei hier hoch, dann muss niemand mehr "Rätsel raten" spielen. :21:
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste