SetFocus på specifik fane i Ribbon
Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Generelt
Forum beskrivelse: Hjælp til generel daglig brug af programmet Excel
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=2514
Udskrevet den: 04.Mar.2025 kl. 04:16
Emne: SetFocus på specifik fane i Ribbon
Besked fra: Ib Hansen
Emne: SetFocus på specifik fane i Ribbon
Posteringsdato: 08.Apr.2016 kl. 09:57
Hej
Jeg har et Ribbon med 2 faner. Fane1 - id=Tab2) - Dette er hovedfanen og her har jeg Buttons, der åbner nogle indtastnings-Userforme.
Fane2- id=Tab1) - Her har jeg en enkelt Button til en Password-Userform - Når korrekt password er tastet, åbnes en ny gruppe (id=Group10).
Når (id=Group10) lukkes på (id=Button1), bliver den stående på fane2 (id=Tab1). Her vil jeg godt have den til at hoppe tilbage til fane1 (id=Tab2).
Hvordan skal koden se ud ? Og hvor skal den placeres i, hvad jeg formoder, id=Button1 ? Jeg er sikker på, det bare er en simpel lille SetFocus-linje, der skal tilføjes uploads/1125/Beregn_hviletiden_Test.xlsm" rel="nofollow - Download ark her Password til at åbne Admin = Bus (med stort B)
<group id="Group10" getVisible="grpView_getVisible" autoScale="true" centerVertically="true"> <button id="Button1" imageMso="AdpStoredProcedureQueryDelete" label="Luk administrator" size="large" onAction="Button1_onAction"/> <button id="Button8" imageMso="FileDocumentEncrypt" label="Skift password" size="large" onAction="Button8_onAction"/> </group > |
Ps. Det samme må også godt ske på LUK Button i Password-Userformen, men så snakker vi om reel VBA kodning. Kan det også lade sig gøre at lave en kode til SetFous = Ribbon id=Tab2 på Password/Luk Button ?
På forhånd tak.
Mvh. Ib
------------- Excel 2010 Dk og 2019 Dk på samme computer. Bruger dog stadig mest 2010.. Men sådan er der jo så majet :o)
|
Svar:
Besked fra: EXCELGAARD
Posteringsdato: 08.Apr.2016 kl. 13:04
Jeg går ud fra, at du husker, at sætte en global Ribbon variabel i din 'OnLoad' makro. I mine projekter kalder jeg altid denne variabel for 'RibbonX'.
Dermed kan du altid aktivere en, hvilken som helst, tab i Ribbon, når som helst, i din kode med
RibbonX.ActivateTab ControlID:="Tab_ID" | Du kan se, hvordan det gøres, ved at downloade et, hvilket som helst (næsten), regneark fra mit website, der benytter Ribbon.
------------- Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
|
Besked fra: Ib Hansen
Posteringsdato: 08.Apr.2016 kl. 14:29
Hmmmm - Tjaaa, hvis du lige snakkede dansk også
Jeg sidder ikke og koder mit Ribbon direkte Custom UI Editoren, som du gør. Jeg bruger Andy's Ribbon Editor, til at generere alle mine koder.
Når jeg kigger i et af dine ark, kan jeg heller ikke finde din "onLoad Makro". Du bygger arkene op, på en måde, jeg slet ikke forstår. Husk, det er logisk for en, kan være raketvidenskab for en anden.
Det jeg tror er den, du kalder "OnLoad Makroen", har jeg i et module. Det ser sådan ud og jeg tror det er den røde kode.
Måske skal koden sættes ind, hvor jeg har indsat med blåt. Det er jo den kode, der må åbne og lukke Group1, hvor Button1 er i.
Option Explicit
Public g_rbxUI As IRibbonUI Public g_blnAdminUser As Boolean Public g_blnShowChangesGroup As Boolean Public g_blnShowViewGroup As Boolean ______________________________________________________________ Public Sub rbx_onLoad(Ribbon As IRibbonUI) Set g_rbxUI = Ribbon End Sub ______________________________________________________________ Public Sub tabs_getVisible(control As IRibbonControl, ByRef returnedVal) returnedVal = g_blnAdminUser End Sub ______________________________________________________________ Public Sub grpChanges_getVisible(control As IRibbonControl, ByRef returnedVal) returnedVal = g_blnShowChangesGroup End Sub ______________________________________________________________ Public Sub grpView_getVisible(control As IRibbonControl, ByRef returnedVal) Select Case UCase(control.ID) Case "GROUP1" returnedVal = Not g_blnShowViewGroup Case "GROUP10" returnedVal = g_blnShowViewGroup Case Else returnedVal = True
Kode der hopper til fane1 id=Tab2 her End Select End Sub |
------------- Excel 2010 Dk og 2019 Dk på samme computer. Bruger dog stadig mest 2010.. Men sådan er der jo så majet :o)
|
Besked fra: EXCELGAARD
Posteringsdato: 08.Apr.2016 kl. 18:42
Hmmmm - Tjaaa, hvis du lige snakkede dansk også  | Ja, det er ikke min stærke side, men jeg skal prøve
Når jeg kigger i et af dine ark, kan jeg heller ikke finde din "onLoad Makro". | Så er det fordi, du overhovedet ikke kigger efter - der er et modul, der klart og tydelig hedder 'VBA_RibbonX_CallBacks' - det kræver altså ikke den store raket videnskab, at regne ud, at alle callbacks makroerne til ribbon ligger i dette modul! Og, i dette modul, er der en makro, der klart og tydelig hedder 'RibbonX_OnLoad' - igen vil jeg mene, at selv en fåreavler fra vest-Jylland kan regne ud, at dette er 'OnLoad' makroen til Ribbon'et!
Du bygger arkene op, på en måde, jeg slet ikke forstår. | Du mener 'logisk' og gennemskueligt? Ja, det kunne du lære lidt af 
Til gengæld ser det ud til, at du gør PRÆCIST, som du skal
Altså burde du kunne aktivere din ribbon tab med
g_rbxUI.ActivateTab ControlID:="Tab2" | Nu merer jeg personligt ikke, at jeg kan skære det mere ud i pap...
PS: Og, Andy's ribbon editor ødelægger mere end den hjælper - du kommer aldrig til at lære det, så længe du benytter den - især, hvis du slet ikke selv har opfattet at du sætter ribbonet i onload-makroen, som jeg beskrev:
Public Sub rbx_onLoad(Ribbon As IRibbonUI) Set g_rbxUI = Ribbon End Sub | Hvordan kan man ikke se, at, "Hey, jeg sætter ribbonet i 'OnLoad', som han bad om!"  Du har endda selv lavet koden?!? Jeg fastholder min påstand om, at det burde du kunne have set selv, og at Andy's editor ødelægger folks mulighed for at lave et reelt stykke arbejde og indlæring!
------------- Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
|
Besked fra: Ib Hansen
Posteringsdato: 09.Apr.2016 kl. 11:38
Jeg kan som sagt ikke selv lave koderne, men bruger i stedet nogle af de "gamle koder" jeg har gemt og Andy's Editor til at lave nye Buttons osv. Derfor ved jeg nok heller ikke helt, hvad der sker inde bag ved 
Jeg havde faktisk misforstået det hele.
Jeg mener at have set et eller andet sted, at SetFocus koden skulle laves inde i XML'en og at linje derfor skulle tilføjes derinde. Derfor indsatte jeg også XML koden med Group10 og Button1.
Da du spurgte om jeg havde sat en Global Ribbon Variable, var det grøn snak og jeg anede slet ikke hvad det rent faktisk betød og derfor sad også og rodede rundt inde i XML. Derfor hentydningen til det Danske, da det hele var temmeligt uklart for mig.
Men nu er der gået en prås op for mig. XML er bare Ribbon layout, som CSS på en hjemmeside. Og selvfølgelig er SetFocus en macro, der køres fra en Button.
Det går lidt langsomt, men jeg lærer hele tiden 
g_rbxUI.ActivateTab ControlID:="Tab2" virker perfekt  Jeg må virkelig se at få det lært, da jeg bruger "Ribbon" i alt jeg laver, men med de gamle koder fra Andy. Mvh. Ib
------------- Excel 2010 Dk og 2019 Dk på samme computer. Bruger dog stadig mest 2010.. Men sådan er der jo så majet :o)
|
Besked fra: EXCELGAARD
Posteringsdato: 09.Apr.2016 kl. 13:28
Heh, heh - ja, jeg må erkende, at min manglende tålmodighed løb lidt af med mig igen - især fordi du endda selv havde markeret den linje, jeg henviste til, med rødt
Men, rart at høre at du ikke lader dig slå ud, bare fordi nørden her har lidt temperament ind i mellem 
------------- Husk, at trykke på [Tak], hvis du kan lide et indlæg. Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.
|
|