• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

kleur geven aan wisselknoppen

Status
Niet open voor verdere reacties.

Bakkerken

Gebruiker
Lid geworden
14 dec 2014
Berichten
46
Hey allen,

momenteel geef ik mijn wisselknop kleur via onderstaande code

Private Sub ToggleButton1_Click()
With ToggleButton1
.BackColor = IIf(.Value, vbGreen, vbRed)
End With
End Sub

Dit werkt perfect.
Echter zijn er ongeveer 120 wisselknoppen.
Dien ik deze private sub voor elke togglebutton apart te doen of kan ik via een code ervoor zorgen dat dit voor alle knoppen geldt?

Alvast bedankt voor de hulp
 
Je zal sowieso voor iedere knop z'n eigen _Click() event moeten hebben en omdat het maar 1 regel code is heeft het geen nut dit op een andere wijze te doen. Je mag je voorbeeld wel inkorten tot dit:
Code:
Private Sub ToggleButton1_Click()
    ToggleButton1.BackColor = IIf(.Value, vbGreen, vbRed)
End Sub


Wat je ook nog zou kunnen doen is dit:
Code:
Private Sub ToggleButton1_Click()
    With ToggleButton1
        .BackColor = ToggleBackColor(.Value)
    End With
End Sub

Function ToggleBackColor(OnOff As Boolean) As Long
    ToggleBackColor = Iif(OnOff, vbGreen, vbRed)
End Function

Dat maakt het eenvoudig om in 1 keer de kleuren op iets anders in te stellen dan vbRed en vbGreen. Maar het feit dat je voor 120 ToggleButtons 120 Subs nodig hebt zal blijven.
 
Laatst bewerkt:
Wat is een ToggleButton? Elk object kan je opvragen dus ook het Id wat hieraan gekoppeld is.

Plaats even een voorbeeldje met een paar van die knoppen.
 
ToggleButtons (Wisselknoppen). De linker is ingedrukt, de rechter niet.

23wpced.jpg


Als het TS alleen maar om de kleur gaat en ergens anders in de code controleert of een ToggleButton aan of uit staat kan hij naar mijn mening beter CheckBoxes gebruiken. Dan heb je er helemaal geen code voor nodig om ook visueel te maken of iets aan of uit staat.
 
Laatst bewerkt:
Aha wisselknop in een formulier. En nu nog wat verzinnen om tot een oplossing te komen.:d Ik ben alleen niet zo thuis in formulieren dus kan wel even duren.
 
Maar het feit dat je voor 120 ToggleButtons 120 Subs nodig hebt zal blijven.
Dat is niet noodzakelijk. Het is in dit geval veel handiger om de events af te handelen via een class. Dan hoef je namelijk niet voor elke button een apart sub te maken. Zie bijgaand voorbeeld.
 

Bijlagen

  • togglebutton_class.xlsm
    22,5 KB · Weergaven: 78
Da's een mooie. Nooit aan gedacht! En denk ik precies waar TS naar op zoek is. :thumb:
 
Laatst bewerkt:
Je hoeft alleen maar de module te kopiëren uit het voorbeeld van rebmog en vervolgens te plakken in je eigen document.
 
Dat deed ik maar krijg foutmelding dat variabele niet gedefinieerd is?

Sorry, maar ben niet zo een kenner zoals jullie...
 
Dat heeft niets te maken met wat rebmog voor je maakte. Je gebruikt in de Userform_Inititialize de variabele ToggleButtons en die is niet gedefinieerd. Omdat je bovenin de regel Option Explicit hebt staan gaat dit mis. Laat die wel staan, maar declareer dus de variabele ToggleButtons.
Dit moet een variabele van het type Object zijn.
 
Laatst bewerkt:
@rebmog, Mooi stukje code. En een leuk leermoment voor mij.:thumb:

@Bakkerken, Wat staat er allemaal in de sub overzetten? Je hebt 122 bakken en op het moment dat een button groen is en er op save geklikt wordt moet de datum van vandaag er achter gezet worden?
 
idd vena, dat dient ie te doen, en lukt nu ook perfect door de hulp op dit forum :)
 
Dan mag je @rebmog even bedanken en dit draadje op opgelost zetten:d
 
Laat die code uit de UserForm_Initialize() eens helemaal weg. Die is naar mijn mening verbodig. Er gebeurt niks en je doet er niks mee.
 
foutmelding is er idd door weg, alles werkt perfect dan.
Echter worden de togglebuttons niet groen wanneer er wordt op geklikt.

Maar hoeft geen probleem te zijn, ik kan ze nog steeds allen apart doen;
het gaat toch mijn petje te boven lijkt me :)

Alvast bedankt aan allen voor de hulp !!!
 
Dat ze nu niet groen worden heeft in ieder niets te maken met het verwijdereb van die code uit de Userform_Initialize.
 
mogelijks toch ergens foutje gemaakt.

Even volledig opnieuw begonnen en hij doet het perfect.

Dankje wel allemaal!!!
 
De code in UserForm_Initialize moet blijven staan en je moet boven aan onder de Option Explicit de volgende declaratie toevoegen:
Private ToggleButtons() As New clsToggleButton
Daarnaast zou ik alle ToggleButton-click-events van het userform weghalen, omdat deze nu door de class worden afgehandeld.

Edit: ik zie nu net dat het je inmiddels gelukt is
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan