• 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.

Checkbox aanspreken met de naam op het lint

Status
Niet open voor verdere reacties.

glda19

Gebruiker
Lid geworden
14 jan 2008
Berichten
916
Hi
staat ook op https://www.excelforum.com/excel-programming-vba-macros/1260395-get-status-checkbox-on-custom-menu-ribbon.html

Hoe de status van de checkbox opvragen na erop klikken dat weet ik.

Maar hoe de status opvragen van een checkbox op het lint zonder er op eerst te klikken.

Kan ik rechtstreeks de control op de ribbon aanspreken met de naam ?
Of moet ik eerst alle controls door lopen met een for next lus van het lint.
en dan een if gebruiken om te zien of de control.id = naam van de checkbox.
 

Bijlagen

  • RibbonCheckbox.xlsm
    20,9 KB · Weergaven: 34
Je callback functie bevat een fout waardoor je variabele niet met de juiste waarde wordt gevuld:
Code:
Sub cbRodeLijnWeergevenAanUit_getPressed(control As IRibbonControl, ByRef returnedVal)
'Callback for checkBox getPressed
'De toestand van de checkbox RodeLijnWeergevenAanUit uitlezen uit het register.
  returnedVal = GetSetting("RibbonCheckboxState", "checkboxstate", "RodelijnWeergevenAanUit", True)
  [COLOR="#FF0000"]bRodelijnWeerGevenAanUit = retrunval[/COLOR]
  [COLOR="#008000"]bRodelijnWeerGevenAanUit = returnedVal[/COLOR]
End Sub

Rood is je eigen foute regel.
Groen is de goede.
 
Laatst bewerkt door een moderator:
Thx edmoor door de verbetering van u werkt het.
Maar kan ik de controls op de ribbon niet aanspreken met hun naam
Nu moet ik voor iedere control die ik wil gebruiken elders in de code een public variabele maken
 
Laatst bewerkt door een moderator:
Dat weet ik zo niet.
Volgens mij moet je ze dan inderdaad allemaal langs in een loop.
Zoals je het nu hebt gedaan is het makkelijkst.
 
Ik zie vaan staan control.id="naam van een control"
Even morgen kijken in eerdere versies van mijn programma misschien staat de oplossing er nog ergens in.
Als ik ze terug vind post ik het hier
 
Laatst bewerkt:
Wat ik al zei, nog nooit op die manier gebruikt, dus weet ik zo ook niet.
Iemand anders wellicht.
 
Voor meerdere checkboxen als ik de status ervan wil kennen moet ik dus het zelfde doen voor elke checkbox
Of kan dit op een betere manier
 
Dan heb je inderdaad een variabele per checkbox nodig.
 
Wat bedoel je precies?

Je kan overigens dit buiten de callbacks gebruiken om te kijken of het vinkje aan of uit is:
Code:
Sub ControleerVinkje()
    MsgBox "Vinkje voor RodelijnWeergevenAanUit is " & _
    IIf(GetSetting("RibbonCheckboxState", "checkboxstate", "RodelijnWeergevenAanUit", True), "Aan", "Uit")
End Sub

De functie GetSetting doet dat en gebruik je in de callback zelf ook.
 
Laatst bewerkt:
geeft verkeerder code als die niet is opgeslagen in het register. Checkbox is niet aan gevinkt dan krijg ik waar in plaats van uit.
en hoe kan ik zorgen dat de checkbox standaard is aangevinkt als de gebruiker de 1ste x het programma opstart en er dus nog geen waarde is opgeslagen in het register
 
Met dit in de ThisWorkbook sectie:
Code:
Private Sub Workbook_Open()
    SaveSetting "RibbonCheckboxState", "checkboxstate", "RodelijnWeergevenAanUit", True
End Sub
 
Laatst bewerkt:
Precies het soort fouten dat je voorkomt met Option Explicit (variabelen declareren verplicht).
 
Wat bedoel je precies?

Je kan overigens dit buiten de callbacks gebruiken om te kijken of het vinkje aan of uit is:
Code:
Sub ControleerVinkje()
    MsgBox "Vinkje voor RodelijnWeergevenAanUit is " & _
    IIf(GetSetting("RibbonCheckboxState", "checkboxstate", "RodelijnWeergevenAanUit", True), "Aan", "Uit")
End Sub

De functie GetSetting doet dat en gebruik je in de callback zelf ook.

sorry even een late test gedaan door veel andere zaken eerste te moeten doen.
Maar de code werkt half enkel als het aangevinkt is het correct bij niet aan gevinkt krijg ik ook aan in de message box
 
Waarschijnlijk staat van de CheckBox het attribuut Tripple state op True.
Zet die op False.
 
Wat bedoel je precies?

Je kan overigens dit buiten de callbacks gebruiken om te kijken of het vinkje aan of uit is:
Code:
Sub ControleerVinkje()
    MsgBox "Vinkje voor RodelijnWeergevenAanUit is " & _
    IIf(GetSetting("RibbonCheckboxState", "checkboxstate", "RodelijnWeergevenAanUit", True), "Aan", "Uit")
End Sub

De functie GetSetting doet dat en gebruik je in de callback zelf ook.

sorry even een late test gedaan door veel andere zaken eerste te moeten doen.
De code geeft altijd true als er true in de formaule staat en altijd false als er false in de formule staat.
Maar hij controleert de toestand van het vinkje niet op het lint
 
Werkt hier prima.
Geen idee waarom dan bij jou niet.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan