Bízza eszköztárak és menük a VBA-ban
Bízza eszköztárak és menük VBA, CommandBar tárgy, CommandBarControl, CommandBarPopup, a helyi menük
Nagyon gyakran a VBA alkalmazás, akkor szüksége van a saját készlet menük és eszköztárak helyett a szabványos alkalmazás által nyújtott. A menük és eszköztárak egy gyűjtemény CommandBars. tárgyát képező alkalmazás (erről a fontos témáról lesz szó a következő modulok). CommandBars gyűjtemény tartalmazza, mint a neve is mutatja, egy sor tárgyak CommandBar (eszköztárak és menük), mindegyik viszont - gyűjtemény CommandBarControls (készlet alkotó elemek a panel / menü), és ez a gyűjtemény egy tároló elemeinek alkotják a menüben. Ilyen elemek lehetnek három:
- CommandBarButton - gombot, vagy menüpont, mellyel a program futtatásához, vagy alprogramot;
- CommandBarComboBox - bonyolult menü / Vezérlőpult (beviteli mező, a legördülő listából a combo box);
- CommandBarPopup - menü vagy almenü.
Példa létre saját eszköztár tűnhet nagyon egyszerű:
Dim CBar1 Ahogy CommandBar
Állítsa CBar1 = CommandBars.Add ( "Dokumentumok", msoBarTop)
Van egy új eszköztár dokumentumok (lásd 8.1 ábra ..), amely lehet, például, hogy távolítsa el a Beállítások menü -> Eszköztárak azonban, amíg az teljesen használhatatlan: nincs gomb. Annak érdekében, hogy megjelenjenek, meg kell adnia egy új típusú elemet CommandBarControl (az egyik a három fentebb felsorolt típusú) CommandBarControls gyűjtemény ebben a menüben.

Ábra. 8.1 A kép közepén - egy üres eszköztár dokumentumok
De először - néhány fontos tulajdonságok és módszerek CommandBar tárgyak:
- Beépített - Ez a tulajdonság meghatározza, hogy egy adott panel / menü beépített ehhez az alkalmazáshoz (azaz, feltéve, hogy az Office alkalmazás fejlesztők). Változás az ingatlan értékét lehetetlen. Ez a tulajdonság nagyon kényelmes használni, hogy távolítsa el az összes szabványos menü, vagy éppen ellenkezőleg, hogy távolítsa el az összes menüből, így csak a szokásos;
- Context - pontosan meghatározza, hol a kódot a menüben (a Normal.dot, egy dokumentum fájlt, stb.) Ezt fel lehet használni az ellenőrzések abban az esetben lehetséges hívás különböző menük azonos nevű;
- Controls - keresztül az ingatlan lehet hozzáférni CommandBarControls gyűjteménye ellenőrzés, hogy mi miatt van szüksége;
- Engedélyezett - "on / off" panel;
- Magasságot. Maradt. Top és W idth - nyilvánvaló tulajdonságokat tulajdonít címsorba az alkalmazás ablak;
- Index. Név és NameLocal - ezek a tulajdonságok lehetővé teszik számunkra, hogy megtaláljuk a megfelelő panel a CommandBars gyűjtemény. Név - a név egy szoftver objektum, NameLocal - ez a név lesz látható a felhasználó számára, Index - ez csak néhány a panel;
- Protection - lehetővé teszi, hogy megakadályozza a felhasználót, hogy távolítsa el a régi gombok a panel, vagy helyezze új volt neki;
- Type - talán a legfontosabb tulajdonság. Meghatározza, hogy milyen lesz ez a panel / menü (eszköztár, menü, vagy a szokásos helyi menü kérhető jobb gombbal kattintva). Azonban ez a tulajdonság csak olvasható. CommandBar objektum típus határozzák meg, amikor a módszer hozzáadása () CommandBars gyűjtemény, nagyon ügyesen meghatározva - a második paraméter a módszer. Esetünkben a metódus külleme
Állítsa CBar1 = CommandBars.Add (a "Dokumentumok", msoBarTop, True, False)
Az első paraméter ( „Documents”) - természetesen a nevét az objektum (panel neve). A második paraméter (msoBarTop) - a rendelkezés a dokkolt panel (msoBarTop, msoBarBottom, msoBarLeft, msoBarRight) vagy a jele, hogy nepristykovana panel (msoBarFloating), illetve általában jelzi az a tény, hogy ez - a helyi menüt, hogy a jobb egérgombbal a nem látható (msoBarPopup). Látható -nak a helyi menü nem alkalmazható.
Hogyan fog kinézni a végén panel - a menü vagy eszköztár függ, hogy melyik elemeket oda.
Megteremtése után a panel befejeződött, szükséges helyezni elemeket. Például hozzon létre eszköztár kell kinéznie:
Dim But1 Ahogy CommandBarControl
Set But1 = CBar1.Controls.Add (msoControlButton)
But1.Caption = "gomb 1"
Úgy tűnik, hogy semmi sem történt - azt látjuk ugyanazt üres panel. Azonban, ha az egérmutatót a panel tetején, lehetséges, hogy egy üres gomb, amely az úgynevezett „gomb 1” (lásd. Ábra. 8.2).

Ábra. 8.2 Az eszköztáron megjelenő dokumentumok szinte láthatatlan gombot 1
Mint látható a kódot, létrehozásához használt kontroll (gomb az eszköztáron) hozzáadása () metódus a Controls gyűjteménye CommandBar tárgy (hívtuk meg CBar1). Tulajdonságok és módszerek ebben a gyűjteményben van szabvány, mint sok más gyűjtemények:
- Alkalmazás tulajdonság visszaadja utalás a kérelem tárgya (Word, Excel, stb)
- Count tulajdonság lehetővé teszi, hogy tudja, hogy mennyi minden ellenőrzést elhelyezve ebben a kollekcióban;
- Elem tulajdonság lehetővé teszi az index (szám), hogy egy objektum referenciát CommandBarControl szabályozás ebben a gyűjteményben;
- Add () metódus (ami kihasználtuk) lehetővé teszi, hogy adjunk egy kontroll ebben a gyűjteményben (eltávolítása már elvégzett ellenőrzések módszerével törlése () a vezérlő is).
Dim But1 Ahogy CommandBarControl
Set But1 = CBar1.Controls.Add (msoControlPopup)
But1.Caption = "1-es menü"

Ábra. 8.3 A panel hoztunk létre szerszámok megjelenő menüből
A többi paraméter a technika magukban foglalják az ID Ellenőrző viszonyított helyzete más ellenőrzések, és hogy meg kell állandó vagy ideiglenes.
Természetesen, együttműködve a vezérlőpult / menü nem fejeződött be. Mi kell több csípés tulajdonságait az ellenőrzéseket. Például egy gombot az első példában, a minimális, azt is meg kell határozni azt a képet a gombra, és az eljárás az, hogy ha rákattint kerül meghívásra. Mert CommandBarButton kifogást a legfontosabb tulajdonságok, módszerek és események az alábbiak:
- Caption - a felirat a kontroll. A gomb jelenik meg, mint egy szerszám csúcsa, hiszen a menüpont - az elem nevét.
- Enabled - engedélyezni vagy letiltani az ActiveX-vezérlő. Ez gyakran használják, hogy megakadályozzák a felhasználói hibákat.
- FaceID (csak gomb) - a képesség, hogy kihasználják a rendszer képet a gomb (hozzárendelése nélkül a megfelelő funkciót s). Például a 4-es érték kiosztja a nyomtató képét. Több ezer ikonok beágyazott Word és az Excel, és így ahelyett, hogy az ikonok, mindig ott van a lehetőség, hogy válassza ki a kész.
- Id - azonosítója beépített hozzárendelt funkció gombot. Ha kijelöli ezt a gombot, a felhasználó eljárást, akkor az érték Id mindig 1.
- Index - száma a vezérlés a Controls gyűjtemény. Arra használják, hogy végre minden szolgáltatást végző az ellenőrzés.
- Maszk - a lehetőséget, hogy a maszk mintázata az objektum megjeleníteni csak a kép egy részét. A maszk jelenik meg külön képként, átlátszó része kell lennie, amely fehér és átlátszatlan - fekete.
- OnAction - a legfontosabb tulajdonság az ellenőrzés. Értékét használható, ha a vezérlő aktív (rákattint egy gombra, vagy menüpont, a befejezés szöveg beírása a beviteli mezőbe, válasszon ki egy új értéket a listán). Célja, hogy jelezze a kiváltott eljárás, vagy egy külső alkalmazás (COM Add In). Példa: But1.OnAction = "MySub".
- Paraméter - lehetséges, hogy használja a tulajdonság, hogy adja át paraméterként egy szubrutin, vagy csak tárolni az adatokat. A munkát az adatokkal String.
- Kép - ez a funkció lehetővé teszi, hogy hozzá egy képet (ikon) gombra az eszköztáron. Leggyakrabban ez nincs használatban, és FaceId tulajdonság (fent). Ha szükséges, a megfelelő ikonokat lehet kiválasztani egy nagy gyűjtemény, amely a Visual Studio, vagy használja az ikonokat szabadon hozzáférhető generátorok.
- ShortcutText - szöveg a billentyűzet kombináció adott gombhoz vagy menüpontot.
- State - a gomb - normális, fulladás vagy körözött keretben.
- Style - egy másik tulajdonsága, hogy befolyásolja a megjelenést. Ez lehetővé teszi, hogy meghatározza, hogy a gomb fog kinézni: Csak az ikon jelenik meg, csak egy feliratot vagy a kettő kombinációja együtt különböző módon.
- ToolTip - meghatározza a elemleírásokat. Alapértelmezésben „durran” Képaláírás ingatlan értékét.
- Típus - visszaadja a vezérlés típusát (módosítható a típus nem lehet!)
- Látható - e vagy sem ez az ellenőrzés látható.
- Törlés () metódus - lehetővé teszi, hogy távolítsa el a gombot az gomb gyűjtemény;
- Execute () metódus - végrehajtja mi határozza meg az ingatlan OnAction;
- Reset () - visszatér az eredeti beállítások gombra változtatások után;
Ez a lehetőség az egyetlen olyan esemény - Kattintson. Azt is lehetővé teszi, hogy meghatározza a válasz a gombra kattintva, de sokkal nehezebb dolgozni vele, mint a OnAction tulajdonság.
Elvileg dolgozni eszköztárak ez elég. Azonban a menü - folyó és összefüggései - valamivel bonyolultabb. A legördülő menüben, akkor több kell, befektetés határozni azokat az elemeket, és a helyi menüben - és még csatolja ezt a menüt bármely objektumra.
Együttműködik beágyazott menü pontosan ugyanaz gyűjteménye Controls, amelyek már használják. Az egyetlen különbség - nem tartozik a Controls gyűjtemény CommandBar objektum és CommandBarPopup tárgy - azaz, egy másik menüpont alatt! Példánkban a mellékletet fog kinézni:
„Create szabvány CommandBar objektum
Dim CBar1 Ahogy CommandBar
Állítsa CBar1 = CommandBars.Add ( "Dokumentumok", msoBarTop)
Dim Menü1 néven CommandBarPopup
Dim SubMenu1 Ahogy CommandBarPopup
Dim SubMenu1Item Ahogy CommandBarButton