Prieš Excel 2007, VBA programuotojai naudojo CommandBar objektą kurdami pasirinktinius meniu, pasirinktines įrankių juostas ir pasirinktinius nuorodų (dešiniuoju pelės klavišu) meniu. Pradedant nuo Excel 2007, CommandBar objektas yra gana keistoje padėtyje. Jei rašote kodą norėdami tinkinti meniu arba įrankių juostą, „Excel“ perima tą kodą ir nepaiso daugelio jūsų komandų.
Vietoj to, kad būtų rodomas gerai apgalvotas sąsajos patobulinimas, „Excel 2007“ (kaip ir vėlesnėse versijose) tiesiog iškelia jūsų tinkintus meniu ir įrankių juostas į juostelės skirtuką, pavadintą „Priedai“.
Meniu ir įrankių juostos tinkinimai patenka į grupę Priedai → Meniu komandos arba Priedai → Pasirinktinės įrankių juostos. Tačiau nuorodų meniu tinkinimas (kuriame taip pat naudojamas CommandBar objektas) vis tiek veikia kaip visada – na, tarsi.
Apatinė eilutė? CommandBar objektas nebėra labai naudingas, tačiau jis išlieka vienintelis būdas pritaikyti sparčiuosius meniu.
Naujo elemento įtraukimas į langelio spartųjį meniu
Žemiau rasite pavyzdinį kodą, kuris prideda naują elementą į nuorodų meniu, kuris pasirodo dešiniuoju pelės mygtuku spustelėjus langelį. Turėtumėte sugebėti pritaikyti šiuos pavyzdžius savo poreikiams.
Galite šiek tiek patobulinti šią priemonę „Change Case“, padarydami ją pasiekiamą langelio nuorodų meniu.
„AddToShortcut“ procedūra prideda naują meniu elementą langelio nuorodų meniu. Galite pritaikyti jį, kad nurodytų savo makrokomandas, pakeisdami objekto, pavadinto NewControl, ypatybes Caption ir OnAction.
Sub AddToShortCut()
Pritemdyta juosta kaip komandų juosta
Pritemdykite naują valdymą kaip komandų juostos mygtuką
DeleteFromShortcut
Nustatyti juosta = Application.CommandBars ("ląstelė")
Nustatyti NewControl = Bar.Controls.Add _
(Tipas:=msoControlButton, ID:=1, _
laikina:=Tiesa)
Su NewControl
.Caption = „&Keisti didžiąją ir mažąją raidę“
.OnAction = „ChangeCase“
.Style = msoButtonIconAndCaption
Baigti su
Pabaigos sub
Kai modifikuojate spartųjį meniu, tas pakeitimas galioja tol, kol iš naujo paleisite „Excel“. Kitaip tariant, modifikuoti spartieji meniu nenustatomi iš naujo, kai uždarote darbaknygę, kurioje yra VBA kodas. Todėl, jei rašote kodą, kad pakeistumėte spartųjį meniu, beveik visada rašote kodą, kad pakeistumėte modifikacijos poveikį.
DeleteFromShortcut procedūra pašalina naują meniu elementą iš langelio nuorodų meniu:
Sub DeleteFromShortcut()
Įvykus klaidai, tęskite toliau
Taikymas. CommandBars („Ląstelė“). Valdikliai _
(„&Keisti didžiąją ir mažąją raidę“). Ištrinti
Pabaigos sub
Tai rodo, kaip naujas meniu elementas rodomas dešiniuoju pelės mygtuku spustelėjus langelį.
Langelių nuorodų meniu, kuriame rodomas pasirinktinis meniu elementas: Keisti didžiąją ir mažąją raidę.
Pirmoji tikroji komanda po kelių kintamųjų paskelbimo iškviečia DeleteFromShortcut procedūrą. Šis teiginys užtikrina, kad sparčiajame langelių meniu bus rodomas tik vienas meniu elementas Keisti didžiąją raidę. Pabandykite pakomentuoti tą eilutę (eilutės pradžioje padėkite apostrofą) ir paleiskite procedūrą keletą kartų, bet nenusiminkite!
Dešiniuoju pelės mygtuku spustelėkite langelį ir pamatysite kelis meniu elemento Keisti raidę atvejus. Atsikratykite visų įrašų kelis kartus paleisdami DeleteFromShortcut (po vieną kartą kiekvienam papildomam meniu elementui).
Galiausiai, jums reikia būdo, kaip pridėti sparčiųjų klavišų meniu elementą, kai atidaroma darbaknygė, ir ištrinti meniu elementą, kai darbaknygė uždaroma. Tai padaryti lengva. Tiesiog pridėkite šias dvi įvykių procedūras prie ThisWorkbook kodo modulio:
Privati antrinė darbaknygė_Open()
Skambinkite AddToShortCut
Pabaigos sub
Privati antrinė darbo knyga_Prieš uždarymą (Atšaukti kaip Būlio)
Skambinkite DeleteFromShortcut
Pabaigos sub
Procedūra Workbook_Open vykdoma atidarius darbaknygę, o procedūra Workbook_BeforeClose – prieš uždarant darbaknygę. Kaip tik gydytojas liepė.
Kuo skiriasi „Excel 2013“ ir „Excel 2016“?
Jei naudojote VBA dirbdami su sparčiaisiais meniu Excel 2007 ar senesnėje versijoje, turite žinoti apie reikšmingą pakeitimą.
Anksčiau, jei jūsų kodas pakeitė spartųjį meniu, tas pakeitimas galiojo visoms darbaknygėms. Pavyzdžiui, jei pridėjote naują elementą prie langelio dešiniojo pelės mygtuko paspaudimo meniu, tas naujas elementas bus rodomas, kai dešiniuoju pelės mygtuku spustelėsite langelį bet kurioje darbaknygėje (ir kitose darbaknygėse, kurias atidarysite vėliau). Kitaip tariant, sparčiųjų klavišų meniu pakeitimai buvo atlikti programos lygiu.
„Excel 2013“ ir „Excel 2016“ naudoja vieną dokumento sąsają, o tai turi įtakos nuorodų meniu. Pakeitimai, kuriuos atliekate sparčiuosiuose meniu, turi įtakos tik aktyviam darbaknygės langui. Kai vykdote kodą, modifikuojantį nuorodų meniu, langų, išskyrus aktyvųjį, nuorodų meniu nebus pakeistas. Tai radikalus nukrypimas nuo to, kaip viskas veikė anksčiau.
Kitas posūkis: jei vartotojas atidaro darbaknygę (arba sukuria naują darbaknygę), kai aktyviame lange rodomas pakeistas sparčiųjų klavišų meniu, naujoje darbaknygėje taip pat rodomas pakeistas sparčiųjų klavišų meniu. Kitaip tariant, naujuose languose rodomi tie patys nuorodų meniu kaip ir lango, kuris buvo aktyvus atidarant naujus langus.
Apatinė eilutė: anksčiau, jei atidarėte darbaknygę ar priedą su pakeistais sparčiaisiais meniu, galėjote būti užtikrinti, kad modifikuoti spartieji meniu bus prieinami visose darbaknygėse. Jūs nebeturite šios garantijos.
Sukurkite pasirinktinius sparčiuosius meniu „Access 2007“.
„Access 2007“ makrokomandos dizaino langas skiriasi nuo vėlesnių versijų, todėl išplėskite toliau pateiktas dalis, jei naudojate „Access 2007“.
„Access 2007“ 1 veiksmas: sukurkite makrokomandų grupę, kurioje yra meniu komandos
Šiame žingsnyje sukuriate makrokomandų grupę, kurios kiekviena makrokomanda bus atskira komanda nuorodų meniu.
Kas yra makro grupė?
Makrokomandų grupė yra vienas makroobjektas, kuriame yra dvi ar daugiau nepriklausomų makrokomandų. Atskiros makrokomandos identifikuojamos įvedus kiekvienos makrokomandos pavadinimą stulpelyje Makrokomandų pavadinimai. Toliau pateiktoje iliustracijoje „Macro3“ yra makrokomandų grupė. NotFoundMsg ir FoundMsg yra atskiros grupės makrokomandos, kurių kiekviena susideda iš dviejų makrokomandų veiksmų.
Pastaba: stulpelis Makrokomandos pavadinimas yra paslėptas pagal numatytuosius nustatymus. Kad būtų rodomas stulpelis Makrokomandos pavadinimas , skirtuko Dizainas grupėje Rodyti / slėpti spustelėkite makrokomandų pavadinimai .
-
Skirtuko Kurti grupėje Kita spustelėkite makrokomandą . Jei ši komanda nepasiekiama, spustelėkite rodyklę, esančią po mygtuku Modulis arba Klasės modulis , tada spustelėkite Makrokomandas .
-
Skirtuko Dizainas grupėje Rodyti / slėpti spustelėkite makrokomandų pavadinimai , kad būtų rodomas stulpelis Makrokomandos pavadinimas .
-
Kiekvienai komandai, kurią norite pasirinkti tinkintame sparčiajame meniu:
-
Stulpelyje Makrokomandos pavadinimas įveskite tekstą, kurį norite rodyti sparčiajame meniu (pvz., „Spausdinti ataskaitą“ arba „Išsaugoti“).
Pastaba: Norėdami sukurti prieigos raktą, kad galėtumėte pasirinkti komandą naudodami klaviatūrą, prieš raidę, kurią norite naudoti kaip prieigos raktą, komandos pavadinime įveskite ampersandą (&) (pvz., „&Išsaugoti“). Ši raidė meniu bus pabraukta.
-
Stulpelyje Veiksmas pasirinkite pirmąjį veiksmą, kurį norite atlikti spustelėję komandą nuorodų meniu.
-
Jei pasirinkę šią komandą norite atlikti daugiau veiksmų, pridėkite juos kitose eilutėse. Atlikdami kiekvieną paskesnį veiksmą, palikite makro pavadinimo langelį tuščią.
Pastaba: Norėdami sukurti eilutę tarp dviejų meniu komandų, stulpelyje Makrokomandos pavadinimas tarp atitinkamų meniu komandų įveskite brūkšnelį (-).
-
Išsaugokite ir pavadinkite makrokomandą, pavyzdžiui, mcrShortcutMenuCommands .
Toliau pateiktoje iliustracijoje parodytas pasirinktinio meniu arba nuorodų meniu makrokomandų grupės pavyzdys.
2 veiksmas, skirtas „Access 2007“: sukurkite makrokomandą, kuri sukuria meniu
Šis veiksmas gali atrodyti perteklinis, tačiau norėdami sukurti spartųjį meniu iš makrokomandų grupės, kurią sukūrėte atlikdami 1 veiksmą, turite sukurti antrą makrokomandą, kurioje yra „AddMenu“ makrokomandos veiksmas. Ši makrokomanda kartais vadinama „meniu makrokomanda“.
-
Skirtuko Kurti grupėje Kita spustelėkite makrokomandą . Jei ši komanda nepasiekiama, spustelėkite rodyklę, esančią po mygtuku Modulis arba Klasės modulis , tada spustelėkite Makrokomandas .
-
Pirmoje makrokomandos eilutėje veiksmų sąraše pasirinkite AddMenu .
-
Dalies Veiksmo argumentai laukelyje Meniu pavadinimas įveskite meniu pavadinimą (pvz., „Pranešti komandos“). Šis argumentas nėra būtinas, bet rekomenduojamas, jei 3 veiksme planuojate įtraukti meniu į juostelės skirtuką (pvz., formos ar ataskaitos skirtuką Priedai). Jei 3 veiksme meniu įtraukiamas kaip spartusis meniu, argumento Meniu pavadinimas nepaisoma.
-
Lauke Meniu makrokomandos pavadinimas įveskite makrokomandos, kurią sukūrėte atlikdami 1 veiksmą, pavadinimą.
-
Išsaugokite ir pavadinkite makrokomandą, pavyzdžiui, mcrAddShortcutMenu .
Toliau pateiktoje iliustracijoje parodytas meniu makrokomandos pavyzdys, sukuriantis meniu, kurį sukūrėme atlikdami 1 veiksmą.
3 veiksmas, skirtas Access 2007: prijunkite meniu prie valdiklio, formos, ataskaitos arba duomenų bazės
Priklausomai nuo to, kur norite, kad meniu būtų rodomas, naudokite vieną ar daugiau iš toliau pateiktų procedūrų.
-
Pridėkite meniu prie formos arba ataskaitos skirtuko Priedai
Naudokite šią procedūrą, jei norite, kad meniu būtų rodomas konkrečios formos ar ataskaitos skirtuke Priedai , kaip parodyta šioje iliustracijoje:
-
Naršymo srityje dešiniuoju pelės mygtuku spustelėkite formą arba ataskaitą, kurioje norite rodyti meniu, tada spustelėkite Dizaino rodinys .
-
Skirtuko Dizainas grupėje Rodyti / slėpti spustelėkite Ypatybių lapas .
-
Pasirinkite visą objektą pasirinkdami Forma arba ataskaita iš sąrašo, esančio ypatybių lapo užduočių srities viršuje.
-
Ypatybių lapo skirtuke Kita, ypatybių lauke Spartusis meniu įveskite makrokomandos, kurią sukūrėte atlikdami 2 veiksmą, pavadinimą (šiame pavyzdyje „mcrAddShortcutMenu“) .
Kai kitą kartą atidarysite formą arba ataskaitą, juostelėje pasirodys skirtukas Priedai . Spustelėkite skirtuką, kad pamatytumėte meniu.
Daugiau informacijos apie juostelės tinkinimo būdus, pvz., priskirtų skirtukų pridėjimą arba numatytųjų skirtukų slėpimą, rasite straipsnyje Sukurkite tinkintą juostelę programoje Access .
Juostelė yra „Microsoft Office Fluent“ vartotojo sąsajos komponentas.
-
Pridėkite meniu kaip formos, ataskaitos ar valdiklio spartųjį meniu
Naudokite šią procedūrą, jei norite, kad meniu būtų rodomas dešiniuoju pelės mygtuku spustelėjus konkrečią formą, ataskaitą ar valdiklį, kaip parodyta šioje iliustracijoje:
-
Naršymo srityje dešiniuoju pelės mygtuku spustelėkite formą arba ataskaitą, kurioje norite, kad būtų rodomas spartusis meniu, tada spustelėkite Dizaino rodinys .
-
Skirtuko Dizainas grupėje Rodyti / slėpti spustelėkite Ypatybių lapas .
-
Pasirinkite valdiklį arba objektą, prie kurio norite pridėti spartųjį meniu.
Pastaba: Norėdami pasirinkti visą objektą, ypatybių lapo užduočių srities viršuje esančiame sąraše pasirinkite Forma arba ataskaita .
-
Ypatybių lapo skirtuke Kita, sparčiųjų klavišų meniu juostos ypatybių lauke įveskite makrokomandos, kurią sukūrėte atlikdami 2 veiksmą, pavadinimą (šiame pavyzdyje „mcrAddShortcutMenu“).
-
Pridėkite meniu kaip visuotinį nuorodų meniu
Ši procedūra pakeičia visus numatytuosius nuorodų meniu dabartinėje duomenų bazėje. Tinkinti spartieji meniu, kuriuos pridėjote prie konkrečių formų, ataskaitų ar valdiklių, neturi įtakos.
-
Spustelėkite Microsoft Office mygtuką , tada spustelėkite Prieigos parinktys .
-
Dialogo lange Prieigos parinktys spustelėkite Dabartinė duomenų bazė .
-
Dalies Juostos ir įrankių juostos parinktys lauke Sparčiųjų klavišų juosta įveskite makrokomandos, kurią sukūrėte atlikdami 2 veiksmą, pavadinimą (šiame pavyzdyje „mcrAddShortcutMenu“).
-
Pasirinktiniai nuorodų meniu pakeičia numatytuosius objektų, prie kurių jie yra prijungti, sparčiuosius meniu. Jei norite išsaugoti tam tikras „Access“ komandas, kurias norite naudoti šiuose meniu, naudokite veiksmą „RunCommand“ , kad komandos būtų įtrauktos į makrokomandų grupes tiems meniu, kuriuose jas norite įtraukti.
-
Pasirinktinis nuorodų meniu, pridėtas prie valdiklio, pakeičia visus kitus tinkintus sparčiuosius meniu, apibrėžtus duomenų bazėje. Pasirinktinis nuorodų meniu, kuris pridedamas prie formos arba ataskaitos, pakeičia tinkintą visuotinį nuorodų meniu.
-
Kai nurodote formos, ataskaitos arba duomenų bazės meniu makrokomandą, „Access“ paleidžia šią meniu makrokomandą, kai tik atidaroma forma, ataskaita arba duomenų bazė. Jei keičiate meniu makrokomandą arba makrokomandų grupę, kuri apibrėžia jos komandas, kai forma, ataskaita arba duomenų bazė yra atidaryta, turite uždaryti formą, ataskaitą arba duomenų bazę ir atidaryti ją iš naujo, kad pamatytumėte pakeitimus.
-
Norėdami sukurti submeniu, atlikite 1 veiksmą, kad sukurtumėte atskirą makrokomandų grupę, kurioje būtų tik submeniu komandos. Tada dar kartą atlikite 1 veiksmą, kad nustatytumėte aukštesnio lygio meniu komandas. Pridėkite submeniu kaip elementą aukštesnio lygio makrokomandų grupėje naudodami makrokomandos veiksmą AddMenu . Toliau pateiktoje iliustracijoje parodyta meniu, kuriame yra submeniu, makrokomandų grupė, o tada rodomas gautas nuorodų meniu. Trečioje makrokomandų grupės eilutėje sukuriamas submeniu Eksportuoti į... ( mcrSubMenu ).
Galite sukurti kelių lygių submeniu naudodami AddMenu veiksmus kiekvieno meniu lygio makrokomandų grupėse. Įsitikinkite, kad kiekvienam „AddMenu “ veiksmui pateikiate argumento „Meniu pavadinimas“ reikšmę , kitaip submeniu aukštesnio lygio meniu bus rodoma kaip tuščia eilutė.
-
Makrokomandos sąlygos palaikomos tik aukščiausio lygio meniu makrokomandoje. Kitaip tariant, galite naudoti sąlygą meniu makrokomandoje, kad nustatytumėte, ar bus rodomas konkretus meniu arba nuorodų meniu, bet tik aukščiausio lygio meniu. Negalite naudoti sąlygų, kad būtų rodomos arba paslėptos komandos arba meniu submeniu. Taip pat galite naudoti sąlygą, kad paslėptumėte arba parodytumėte tinkintą nuorodų meniu arba visuotinį nuorodų meniu.
-
Pasirinktinai meniu makrokomandą, kurią sukuriate atlikdami 2 veiksmą, galite įtraukti į makrokomandų grupę. Pavyzdžiui, jei turite kelis nuorodų meniu skirtingiems objektams ar valdikliams, galite sukurti vieną makrokomandos objektą, kuriame būtų visos būtinos meniu makrokomandos. Įsitikinkite, kad rodomas stulpelis Makrokomandos pavadinimas ir kiekvienai makrokomandai įveskite unikalų pavadinimą. Atlikdami 3 veiksmą, naudokite šią žymą, kad nurodytumėte makrokomandą: makrogrupės pavadinimas.makrovardas . Pavyzdžiui, mcrAddShortcutMenus.AddMenu2 .