Prije Excel 2007, VBA programeri koristili su objekt CommandBar za stvaranje prilagođenih izbornika, prilagođenih alatnih traka i prilagođenih izbornika prečaca (desni klik). Počevši od Excela 2007, objekt CommandBar nalazi se u prilično neobičnom položaju. Ako pišete kod za prilagodbu izbornika ili alatne trake, Excel presreće taj kod i zanemaruje mnoge vaše naredbe.
Umjesto da prikaže vaše dobro osmišljeno poboljšanje sučelja, Excel 2007 (kao i novije verzije) jednostavno izbacuje vaše prilagođene izbornike i alatne trake u sveobuhvatnu karticu vrpce pod nazivom Dodatci.
Prilagodbe izbornika i alatne trake završavaju u grupi Dodaci → Naredbe izbornika ili grupi Dodaci → Prilagođene alatne trake. Ali prilagođavanje izbornika prečaca (koji također koristi objekt CommandBar) i dalje radi kao i uvijek - pa, nekako.
Poanta? Objekt CommandBar više nije vrlo koristan, ali ostaje jedini način za prilagodbu izbornika prečaca.
Dodavanje nove stavke u izbornik prečaca ćelije
U nastavku ćete pronaći primjer koda koji dodaje novu stavku u izbornik prečaca koji se pojavljuje kada desnom tipkom miša kliknete ćeliju. Trebali biste biti u mogućnosti prilagoditi ove primjere svojim potrebama.
Uslužni program Change Case možete malo poboljšati tako što ćete ga učiniti dostupnim iz izbornika prečaca ćelije.
Procedura AddToShortcut dodaje novu stavku izbornika u izbornik prečaca ćelije. Možete ga prilagoditi tako da ukazuje na vaše vlastite makronaredbe promjenom svojstava Caption i OnAction objekta pod nazivom NewControl.
Pod AddToShortCut()
Zatamnjena traka kao naredbena traka
Zatamnite novu kontrolu kao gumb naredbene trake
DeleteFromShortcut
Postavi traku = Application.CommandBars("Cell")
Postavite NewControl = Bar.Controls.Add _
(Tip:=msoControlButton, ID:=1, _
privremeno:=Točno)
Uz NewControl
.Caption = "&Promijeni mala slova"
.OnAction = "ChangeCase"
.Stil = msoButtonIconAndCaption
Završi s
Kraj Sub
Kada izmijenite izbornik prečaca, ta izmjena ostaje na snazi sve dok ponovno ne pokrenete Excel. Drugim riječima, izmijenjeni izbornici prečaca ne resetiraju se sami kada zatvorite radnu knjigu koja sadrži VBA kod. Stoga, ako pišete kod za izmjenu izbornika prečaca, gotovo uvijek pišete kod kako biste poništili učinak vaše izmjene.
Postupak DeleteFromShortcut uklanja novu stavku izbornika iz izbornika prečaca ćelije:
Sub DeleteFromShortcut()
U slučaju pogreške Nastavi dalje
Application.CommandBars("Cell").Kontrole _
(“&Promijeni mala slova”).Izbriši
Kraj Sub
Ovo pokazuje kako se nova stavka izbornika prikazuje nakon što desnom tipkom miša kliknete ćeliju.
Izbornik prečaca ćelije koji prikazuje prilagođenu stavku izbornika: Promjena velikih i malih slova.
Prva stvarna naredba nakon deklaracije nekoliko varijabli poziva proceduru DeleteFromShortcut. Ova izjava osigurava da se samo jedna stavka izbornika Change Case pojavi na izborniku prečaca Cell. Pokušajte komentirati taj redak (stavite apostrof na početak retka) i pokrenite proceduru nekoliko puta — ali nemojte se zanositi!
Desnom tipkom miša kliknite ćeliju i vidjet ćete više instanci stavke izbornika Promjena slučaja. Riješite se svih unosa pokretanjem DeleteFromShortcut više puta (jednom za svaku dodatnu stavku izbornika).
Konačno, potreban vam je način da dodate stavku izbornika prečaca kada je radna knjiga otvorena i da izbrišete stavku izbornika kada je radna knjiga zatvorena. To je lako učiniti. Samo dodajte ova dva postupka događaja u modul koda ThisWorkbook:
Privatna pod radna knjiga_Open()
Pozovite AddToShortCut
Kraj Sub
Privatna pod Radna knjiga_Prije zatvaranja(Odustani kao Boolean)
Pozovite DeleteFromShortcut
Kraj Sub
Procedura Workbook_Open se izvršava kada se radna knjiga otvori, a Workbook_BeforeClose procedura se izvodi prije zatvaranja radne knjige. Baš ono što je liječnik naredio.
Što je drugačije u Excelu 2013 i Excelu 2016?
Ako ste koristili VBA za rad s izbornicima prečaca u programu Excel 2007 ili starijem, morate biti svjesni značajne promjene.
U prošlosti, ako je vaš kod mijenjao izbornik prečaca, ta je izmjena bila na snazi za sve radne knjige. Na primjer, ako ste dodali novu stavku u izbornik s desnim klikom na ćeliju, ta će se nova stavka pojaviti kada desnom tipkom miša kliknete ćeliju u bilo kojoj radnoj knjizi (plus druge radne knjige koje otvorite kasnije). Drugim riječima, modifikacije izbornika prečaca napravljene su na razini aplikacije .
Excel 2013 i Excel 2016 koriste jedno sučelje dokumenta, a to utječe na izbornike prečaca. Promjene koje napravite na izbornicima prečaca utječu samo na prozor aktivne radne knjige. Kada izvršite kod koji mijenja izbornik prečaca, izbornik prečaca za prozore koji nisu aktivni prozor neće se promijeniti. Ovo je radikalno odstupanje od načina na koji su stvari funkcionirale.
Još jedan obrat: ako korisnik otvori radnu knjigu (ili stvori novu radnu knjigu) kada aktivni prozor prikazuje izmijenjeni izbornik prečaca, nova radna knjiga također prikazuje izmijenjeni izbornik prečaca. Drugim riječima, novi prozori prikazuju iste izbornike prečaca kao i prozor koji je bio aktivan kada su novi prozori otvoreni.
Zaključak: u prošlosti, ako ste otvorili radnu knjigu ili dodatak s izmijenjenim izbornicima prečaca, mogli ste biti sigurni da će izmijenjeni izbornici prečaca biti dostupni u svim radnim knjigama. Nemate više to jamstvo.
Stvorite prilagođene izbornike prečaca u programu Access 2007
Prozor dizajna makronaredbi drugačiji je u programu Access 2007 u usporedbi s kasnijim verzijama pa proširite sljedeće odjeljke da biste ih pratili ako koristite Access 2007.
Korak 1 za Access 2007: Stvorite grupu makronaredbi koja sadrži naredbe izbornika
U ovom koraku stvarate grupu makronaredbi, od kojih će svaka makronaredba biti zasebna naredba na vašem izborniku prečaca.
Što je makro grupa?
Grupa makronaredbi je pojedinačni makro objekt koji sadrži dva ili više neovisnih makronaredbi. Pojedinačne makronaredbe identificiraju se upisivanjem naziva za svaku makronaredbu u stupac Nazivi makronaredbi. Na sljedećoj ilustraciji Macro3 je makro grupa. NotFoundMsg i FoundMsg pojedinačne su makronaredbe unutar grupe, a svaka se makronaredba sastoji od dvije makro akcije.
Napomena: stupac Naziv makronaredbe skriven je prema zadanim postavkama. Za prikaz stupca Naziv makronaredbe , na kartici Dizajn , u grupi Prikaži/sakrij kliknite Nazivi makronaredbi .
-
Na kartici Stvori u grupi Ostalo kliknite Makro . Ako ova naredba nije dostupna, kliknite strelicu ispod gumba Module ili Class Module , a zatim kliknite Makro .
-
Na kartici Dizajn , u grupi Prikaži/sakrij kliknite Nazivi makronaredbi za prikaz stupca Naziv makronaredbe .
-
Za svaku naredbu koju želite na svom prilagođenom izborniku prečaca:
-
U stupac Naziv makronaredbe unesite tekst koji želite prikazati na izborniku prečaca (na primjer, "Ispiši izvješće" ili "Spremi").
Napomena: Da biste stvorili pristupnu tipku kako biste mogli koristiti tipkovnicu za odabir naredbe, upišite ampersand (&) prije slova za koje želite da bude pristupna tipka u nazivu naredbe (na primjer, "&Spremi"). Ovo slovo bit će podvučeno na izborniku.
-
U stupcu Radnja odaberite prvu radnju koju želite izvršiti kada kliknete naredbu na izborniku prečaca.
-
Ako postoji više radnji koje želite izvršiti kada odaberete ovu naredbu, dodajte ih u sljedeće retke. Za svaku sljedeću radnju ostavite ćeliju Naziv makronaredbe praznu.
Napomena: Za stvaranje linije između dvije naredbe izbornika, upišite crticu (-) u stupac naziva makronaredbe između odgovarajućih naredbi izbornika.
-
Spremite i dodijelite naziv makronaredbi, na primjer, mcrShortcutMenuCommands .
Sljedeća ilustracija prikazuje primjer grupe makronaredbi za prilagođeni izbornik ili izbornik prečaca.
Korak 2 za Access 2007: Stvorite makronaredbu koja stvara izbornik
Ovaj se korak može činiti suvišnim, ali da biste stvorili izbornik prečaca iz grupe makronaredbi koju ste stvorili u koraku 1, morate stvoriti drugu makronaredbu koja sadrži radnju makronaredbe AddMenu . Ova se makronaredba ponekad naziva "makronaredba izbornika".
-
Na kartici Stvori u grupi Ostalo kliknite Makro . Ako ova naredba nije dostupna, kliknite strelicu ispod gumba Module ili Class Module , a zatim kliknite Makro .
-
U prvom retku makronaredbe odaberite AddMenu na popisu Action .
-
U odjeljku Argumenti akcije , u okviru Naziv izbornika upišite naziv izbornika (na primjer, "Naredbe izvješća"). Ovaj argument nije potreban, ali se preporučuje ako u koraku 3 planirate dodati izbornik na karticu vrpce (kao što je kartica Dodaci obrasca ili izvješća). Ako je izbornik dodan kao izbornik prečaca u koraku 3, argument Naziv izbornika se zanemaruje.
-
U okvir Naziv makronaredbe izbornika unesite naziv makronaredbe koju ste izradili u 1. koraku.
-
Spremite i dodijelite naziv makronaredbi, na primjer, mcrAddShortcutMenu .
Sljedeća ilustracija prikazuje primjer makronaredbe izbornika koji stvara izbornik koji smo dizajnirali u 1. koraku.
Korak 3 za Access 2007: Priložite izbornik kontroli, obrascu, izvješću ili bazi podataka
Ovisno o tome gdje želite da se izbornik pojavi, koristite jedan ili više sljedećih postupaka.
-
Dodajte izbornik na karticu Add-Ins obrasca ili izvješća
Koristite ovaj postupak ako želite da se izbornik pojavi na kartici Dodaci za određeni obrazac ili izvješće, kao što je prikazano na sljedećoj ilustraciji:
-
U navigacijskom oknu desnom tipkom miša kliknite obrazac ili izvješće gdje želite da se pojavi izbornik, a zatim kliknite Prikaz dizajna .
-
Na kartici Dizajn u grupi Prikaži/sakrij kliknite List svojstava .
-
Odaberite cijeli objekt odabirom Obrazac ili Izvješće s popisa na vrhu okna zadatka List sa svojstvima.
-
Na kartici Ostalo na listu svojstava, u okvir svojstava izbornika prečaca upišite naziv makronaredbe koju ste stvorili u koraku 2 (u ovom primjeru, "mcrAddShortcutMenu").
Sljedeći put kada otvorite obrazac ili izvješće, na vrpci će se pojaviti kartica Dodaci . Pritisnite karticu da biste vidjeli izbornik.
Za više informacija o tehnikama prilagodbe vrpce, kao što je dodavanje prilagođenih kartica ili skrivanje zadanih kartica, pogledajte članak Stvaranje prilagođene vrpce u programu Access .
Vrpca je komponenta korisničkog sučelja Microsoft Office Fluent.
-
Dodajte izbornik kao izbornik prečaca za obrazac, izvješće ili kontrolu
Koristite ovaj postupak ako želite da se izbornik pojavi kada desnom tipkom miša kliknete određeni obrazac, izvješće ili kontrolu, kao što je prikazano na sljedećoj ilustraciji:
-
U navigacijskom oknu desnom tipkom miša kliknite obrazac ili izvješće na kojem želite da se pojavi izbornik prečaca, a zatim kliknite Prikaz dizajna .
-
Na kartici Dizajn u grupi Prikaži/sakrij kliknite List svojstava .
-
Odaberite kontrolu ili objekt na koji želite priložiti izbornik prečaca.
Napomena: Za odabir cijelog objekta odaberite Obrazac ili Izvješće s popisa na vrhu okna zadatka List svojstava.
-
Na kartici Ostalo na listu svojstava, u okvir svojstava Traka izbornika prečaca , upišite naziv makronaredbe koju ste stvorili u 2. koraku (u ovom primjeru, "mcrAddShortcutMenu").
-
Dodajte izbornik kao globalni izbornik prečaca
Ovaj postupak zamjenjuje sve zadane izbornike prečaca u trenutnoj bazi podataka. To ne utječe na prilagođene izbornike prečaca koje ste priložili određenim obrascima, izvješćima ili kontrolama.
-
Kliknite gumb Microsoft Office , a zatim kliknite Mogućnosti pristupa .
-
U dijaloškom okviru Mogućnosti programa Access kliknite Trenutna baza podataka .
-
U odjeljku Mogućnosti vrpce i alatne trake , u okvir Traka izbornika prečaca upišite naziv makronaredbe koju ste stvorili u 2. koraku (u ovom primjeru "mcrAddShortcutMenu").
-
Prilagođeni izbornici prečaca zamjenjuju zadane izbornike prečaca za objekte kojima su priloženi. Ako želite zadržati određene Accessove naredbe za korištenje na ovim izbornicima, upotrijebite radnju RunCommand da biste naredbe stavili u grupe makronaredbi za izbornike u kojima ih želite.
-
Prilagođeni izbornik prečaca koji je priložen kontroli zamjenjuje sve druge prilagođene izbornike prečaca koji su definirani u bazi podataka. Prilagođeni izbornik prečaca koji je priložen obrascu ili izvješću zamjenjuje prilagođeni globalni izbornik prečaca.
-
Kada navedete makronaredbu izbornika za obrazac ili izvješće ili za bazu podataka, Access pokreće ovu makronaredbu izbornika kad god se otvori obrazac, izvješće ili baza podataka. Ako promijenite makronaredbu izbornika ili grupu makronaredbi koja definira njegove naredbe dok su obrazac, izvješće ili baza podataka otvoreni, morate zatvoriti obrazac, izvješće ili bazu podataka i ponovno ih otvoriti da biste vidjeli promjene.
-
Da biste stvorili podizbornik, slijedite 1. korak za stvaranje zasebne makro grupe koja sadrži samo naredbe podizbornika. Zatim ponovno slijedite 1. korak kako biste definirali naredbe za izbornik više razine. Dodajte podizbornik kao stavku u grupu makronaredbi više razine pomoću radnje makronaredbe AddMenu . Sljedeća ilustracija prikazuje grupu makronaredbi za izbornik koji sadrži podizbornik, a zatim prikazuje rezultirajući izbornik prečaca. Treći redak u grupi makronaredbi stvara podizbornik Izvezi u... ( mcrSubMenu ).
Možete stvoriti više razina podizbornika pomoću radnji AddMenu u grupama makronaredbi za svaku razinu izbornika. Obavezno navedite vrijednost za argument Naziv izbornika za svaku radnju AddMenu , inače će se podizbornik pojaviti kao prazan redak u izborniku više razine.
-
Makro uvjeti podržani su samo u makrou izbornika najviše razine. Drugim riječima, možete koristiti uvjet u makronaredbi izbornika kako biste odredili hoće li određeni izbornik ili izbornik prečaca biti prikazan, ali samo za izbornike na najvišoj razini. Ne možete koristiti uvjete za prikaz ili skrivanje naredbi ili podizbornika u izbornicima. Također možete upotrijebiti uvjet za skrivanje ili prikazivanje prilagođenog izbornika prečaca ili globalnog izbornika prečaca.
-
Po želji, makronaredba izbornika koju stvorite u 2. koraku može biti dio grupe makronaredbi. Na primjer, ako imate nekoliko izbornika prečaca za različite objekte ili kontrole, možete stvoriti jedan makro objekt koji sadrži sve potrebne makronaredbe izbornika. Provjerite jeste li prikazali stupac Naziv makronaredbe i upišite jedinstveni naziv za svaku makronaredbu. U 3. koraku koristite sljedeću notaciju za pozivanje na makronaredbu: macrogroupname.macroname . Na primjer, mcrAddShortcutMenus.AddMenu2 .