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

Excel VBA vinkje in ribbon

Status
Niet open voor verdere reacties.

longron

Gebruiker
Lid geworden
2 apr 2007
Berichten
361
Hallo alle,

wil kan mij vertellen hoe ik een actief munueitem kan maken vanuit de vba. ik wil in het menu wat gemaakt is voor mijn "programma" een vinkje neezetten als betreffende item ( macro ) gerund is.
dus ik heb menu item inkleuren. als dit is gebeurd dan moet er een vinkje voor komen te staan en als het ontkleurd is dan een vinkje bij ontkleurd.

thanks.

groet.

Ronald
 
Laat eens zien wat je met het menu hebt gedaan en hoe je dat gedaan hebt.
Daar zijn nl. meerdere mogelijkheden voor waar een antwoord op je vraag van afhankelijk is.
 
Hallo Edmoor,

Dit is wat ik nu heb "gemaakt" voor het menu.
hoor graag je advies,

groet,
Ronald

<!-- This is example : Dictator(2) With_Custom_Tab.xlsm -->

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">

<!-- Disable Share in the Ribbon of Excel 2016. -->
<commands>
<command idMso="Collaborate" enabled="false" />
</commands>

<!-- Set startFromScratch to true to hide the Ribbon and QAT-->
<ribbon startFromScratch="false">

<!-- startFromScratch="true" hides all of the Ribbon tabs and it hide the QAT. -->
<!-- It not hides the Contextual tabs on the ribbon, for example the -->
<!-- Format tab that you see when you select a picture on your worksheet. -->
<!-- So if you want to hide them you must use the RibbonX below: -->

<contextualTabs>
<tabSet idMso="TabSetSmartArtTools" visible="false" />
<tabSet idMso="TabSetChartTools" visible="false" />
<tabSet idMso="TabSetDrawingTools" visible="false" />
<tabSet idMso="TabSetPictureTools" visible="false" />
<tabSet idMso="TabSetPivotTableTools" visible="false" />
<tabSet idMso="TabSetHeaderAndFooterTools" visible="false" />
<tabSet idMso="TabSetTableToolsExcel" visible="false" />
<tabSet idMso="TabSetPivotChartTools" visible="false" />
<tabSet idMso="TabSetInkTools" visible="false" />
<tabSet idMso="TabSetSparkline" visible="false" />
<tabSet idMso="TabSetTimeSlicerTools" visible="false" />
<tabSet idMso="TabSetSlicerTools" visible="false" />
<tabSet idMso="TabSetEquationTools" visible="false" />
</contextualTabs>

<!-- Add Custom tab to the Ribbon with your own buttons-->
<!-- The example add three groups to the new tab named 'My Tab' -->
<!-- On the last tab there is a menu with five options-->

<tabs>
<tab id="MyCustomTab1" label="Roosterprogramma" >
<group id="customGroup1" label=" ">
<menu id="MyDropdownMenu1" label="Werkgevers" size="large" imageMso="ClipArtInsert" >
<button id="customButton1" label="Overzetten naar maand" onAction="Werkgevers_overzetten" imageMso="CondolatoryEvent" />
<button id="customButton2" label="Werkgevers indelen" onAction="Werkgevers_indelen" imageMso="AddOrRemoveAttendees" />
<button id="customButton3" label="Werknemers buiten telling" onAction="hoeveel_mensen_buiten_telling" imageMso="AddOrRemoveAttendees" />
</menu>
</group>

<group id="customGroup2" label=" ">
<menu id="MyDropdownMenu2" label="Kleuren" size="large" imageMso="AppointmentColorDialog" >
<button id="customButton6" label="Rooster kleuren aanbrengen" onAction="Kleur_aanbrengen" imageMso="AccessOnlineLists" />
<button id="customButton7" label="Rooster kleuren verwijderen" onAction="Kleur_verwijderen" imageMso="AccessOfflineLists" />
<button id="customButton8" label="Dagtelling kleuren" onAction="Dag_telling_kleuren" imageMso="TableSharePointListsRefreshList" />
<button id="customButton9" label="Dagtelling ontkleuren" onAction="Dag_kleur_verwijderen" imageMso="TableStyleClear" />
</menu>
</group>

<group id="customGroup3" label=" ">
<menu id="MyDropdownMenu3" label="Printen" size="large" imageMso="FilePrint" >
<button id="customButton11" label="Print maandoverzicht" onAction="Print_maand" imageMso="ViewPageBreakPreviewView" />
<button id="customButton12" label="Print weekoverzicht" onAction="Print_week" imageMso="ViewPrintLayoutView" />
</menu>
</group>

<group id="customGroup4" label=" ">
<menu id="MyDropdownMenu4" label="Rooster" size="large" imageMso="CreateTable" >
<button id="customButton13" label="Nieuw jaar maken" onAction="Jaar_maken" imageMso="AdpManageIndexes" />
</menu>
</group>

</tab>
</tabs>


</ribbon>


<!--hide all buttons and tabs in Backstage (File)-->
<backstage>
<button idMso="FileSave" visible="true"/>
<button idMso="FileSaveAs" visible="true"/>
<button idMso="FileOpen" visible="false"/>
<button idMso="FileClose" visible="false"/>
<button idMso="ApplicationOptionsDialog" visible="false"/>
<button idMso="FileExit" visible="true"/>
<button idMso="HistoryTab" visible="false"/>
<button idMso="OfficeFeedback" visible="false"/>
<tab idMso="TabInfo" visible="false"/>
<tab idMso="TabRecent" visible="false"/>
<tab idMso="TabNew" visible="false"/>
<tab idMso="TabPrint" visible="false"/>
<tab idMso="TabShare" visible="false"/>
<tab idMso="TabHelp" visible="false"/>
<tab idMso="TabPublish" visible="false"/>
<tab idMso="TabSave" visible="false"/>
<tab idMso="TabOfficeStart" visible="false"/>
<tab idMso="Publish2Tab" visible="false"/>
<tab idMso="TabOfficeFeedback" visible="false"/>
</backstage>

</customUI>
 
Dan gaat het mij om het document waar dat is zit, dus inclusief de callback routines.
 
En waar verwacht je dan precies op welk moment een vinkje?
 
bv bij het kleuren dat van de dienstlijst als een P wordt invult er een kleurtje in de cel komt. ik wil dan met het vinkje zien dat de functie actief is.
dus onder kleuren - roosterkleuren aanbrengen een vinkje.
Mag ook ip van het icoontje ervoor dat dat als het niet actief is weg mag of bv een X

hoop dat je begrijpt wat ik bedoel.
Ik zit op werk dus niet altijd gelijk de mogelijkheid om te reageren.
Maar stel je advies erg op prijs.

Groet,

Ronald
 
Je legt het uit alsof ik precies weet welke processen je waar en wanneer gebruikt, en dat is uiteraard niet zo.
Ik zou het zo kunnen zeggen:

Je hebt de labels een vaste tekst gegeven.
Dit kan je ook aan een callback routine overlaten.
De tekst die terug wordt gegeven laat je dan door die routine bepalen.
Die routine kijkt dan afhankelijk van de door jou gestelde voorwaarden welke tekststring moet worden terug gegeven.
Wanneer dit in het menu moet wijzigen doe je een moRibbon.Invalidate om de teksten opnieuw te laten plaatsen.
 
ok, snap ik. had je in het bestand gekeken wat ik bedoelde met de routines vanuit het menu?

Het is me nog niet echt duidelijk hoe ik dat moet formuleren maar morgen hoop ik even te kijken en op te zoeken.
Ik snap wel wat je bedoelt. als ik er niet uitkom roep ik wel weer.

alvast bedankt zover.
top deze site en jullie goede hulp.
Fijn dat er zoveel mensen zijn die dit doen en kennis van zaken hebben.
lange tijd geleden was ik meer bedreven maar merk dat ik veel kwijt ben. :(

Thanks.

Ronald
 
Gezien de CustomUI XML die je hebt gemaakt dacht ik al dat je wel zou begrijpen wat ik bedoel met die korte to the point uitleg.
Bij vragen lees ik het dan hier wel :)
 
best alle, ik kom toch niet verder. loop vast. ik zoek een voorbeeld waarbij ik bv een vinkje kan zetten bij de maand welke actief is op de sheet. en wat dan veranderd als ik een andere maand kies ( ander tabblad.) graag jullie advies en goede ideeën.

thanks,

Ronald
 
Goed idee: Voorbeeld document.
 
Waarmee ik niets kan:
GR.jpg

Leg ook uit hoe, wat en waar.
 
heee, das maf, volgens mij had ik die beveiliging eruit gehaald. oke. sorrie.
deze versie zou wel moeten werken. is zeker nog voor verbetering vatbaar maar goed. waar het nu om gaat is dat als je hem opent zie je een menu. bij het tweede item "kleuren' staan 4 mogelijkheden. als je de eerste macro start dan worden in het rooster de opmaak veranderd. Als er een dienst wordt ingevoerd. bv een B dan veranderd de cel van kleur. handig bij het roosteren. Als je die functie wilt uitschakelen kies je de tweede opdracht. bij de twee onderste keuzes heb je de zelfde mogelijkheid maar dan met de dagtelling. kom je op het juiste aantal diensten op die dag dan veranderd de cel in groen. ik zou bv een vinkje willen hebben als de opdracht is geactiveerd. dus schakel je de kleur in de komt er een vinkje dan weet je dat je die opdracht hebt geactiveerd.
bij het menu-item "Tabblad" kun je kiezen welke maand of ander tabblad je wilt bewerken. ook daarbij een vinkje.
Als je andere ideeën hebt om het duidelijker te maken hoor ik het graag van je.

hoop dat je me kunt volgen. ( dit is net zo lastig als een handleiding schrijven :shocked:

Bekijk bijlage 308459

Alvast bedankt.

fijne zondag trouwens.

Ronald
 
Beste allen,

ik kon niet uit het volgende probleem.

in het programmaatje wat ik aan het schrijven ben wil ik het volgende:

onder kleuren staan 4 mogelijkheden. roosterkleuren aan en uit. en dagtellingkleuren aan en uit.
Ik heb getracht te maken met wat ik heb gevonden maar het lukt me niet om het werkend te krijgen.
Bedoelingis dat als de roosterkleuren aan zijn gezet dat moet het item roosterkleuren aan inactief worden en andersom.

graag jullie advies

thanks.

Ronald

Bekijk bijlage 308941
 
Zoals ik al eerder opmerkte kan je dat doen middels de callback routines van de CustomUI.
Kijk eens naar dit voorbeeld met een invoegtoepassing die ik enkele maanden geleden voor een andere poster maakte:
Bekijk bijlage MST.zip

Daar werkt de CustomUI XML volledig via de callbacks, incl. het enablen en disablen van knoppen.
Voeg de xlam als invoegtoepassing aan je Excel toe.
 
Laatst bewerkt:
Dank je wel. Ik ga er morgen naar kijken.
Ik had begrepen dat het via de callback moest e. Geprobeert maar kreeg een. Foutmelding. Ik ga kijken naar je voorbeeld. Dank je
Groetjes
Ronald
 
Hallo Edmoor,

hoewel ik wel een redelijk idee krijg hoe je het menu hebt opgebouwd en hoe de aansturing is zie ik niet hoe ik dit kan toepassen op mijn wens om binnen het menu wat ik zelf gebruik een menu-item te deactiveren en andere te actieveren nadat een macro heeft gedraaid.
Als je daarover een advies hebt hoor ik het graag.

alvast bedankt
Ronald
 
Alles gebeurt via de callback routines. Zodra je vanuit een macro iets aan een knop wilt veranderen dien je na de wijziging de Invalidate methode van de RibbonUI uit te voeren.
Zie in de voorbeeldcode:
Code:
Public Sub NieuweLijst()
    [COLOR="#008000"]'Maak de andere knoppen ook beschikbaar[/COLOR]
    MST_ShowAll = True
    Mst_ribbonui.Invalidate
    '---------------------------------------
    
    MsgBox "Nieuwe Lijst"
End Sub

Public Sub OpenBestaandeLijst()
    [COLOR="#008000"]'Maak de andere knoppen ook beschikbaar[/COLOR]
    MST_ShowAll = True
    Mst_ribbonui.Invalidate
    '---------------------------------------
    
    MsgBox "Open Bestaande Lijst"
End Sub

De CustomUI, het MST.xlsx document en de VBA in de MST.xlam werken op een aantal manieren samen waarvoor ook weer een Public variabele wordt gebruikt. Als je die werking door hebt zal je wel begrijpen wat er allemaal gebeurt.

Je kan dus bijvoorbeeld bepalen of een knop actief is ja of nee.
Tevens kan je de Caption (Label) aanpassen, dus de tekst met of zonder een vink tekentje er achter.
Zo kan je ieder attribuut van iedere knop of wat dan ook in dat menu beïnvloeden.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan