A VBA-kódban egy objektumra való hivatkozás azért fontos, mert azonosítania kell azt az objektumot, amellyel az Excel 2016-ban dolgozni szeretne. Végül is a VBA még nem tud olvasni a gondolataiban. A pletykák szerint a gondolatolvasó objektumot bevezetik az Excel 2019-ben.
Egy csapásra a tárgyak egész gyűjteményével dolgozhat. Gyakrabban azonban egy adott objektummal kell dolgoznia egy gyűjteményben (például egy munkafüzet egy adott munkalapjával). Ha egy gyűjtemény egyetlen objektumára szeretne hivatkozni, az objektum nevét vagy indexszámát zárójelbe kell tenni a gyűjtemény neve után, így:
Munkalapok („1. lap”)
Figyelje meg, hogy a lap neve idézőjelben van. Ha kihagyja az idézőjeleket, az Excel nem fogja tudni azonosítani az objektumot (és azt feltételezi, hogy ez egy változónév).
Ha az 1. munkalap az első (vagy egyetlen) munkalap a gyűjteményben, használhatja a következő hivatkozást is:
Munkalapok (1)
Ebben az esetben a szám nincs idézőjelben. A lényeg? Ha egy objektumra a nevével hivatkozik, használjon idézőjeleket. Ha egy objektumra annak indexszámával hivatkozik, használjon egyszerű számot idézőjelek nélkül.
Mi a helyzet a diagramlapokkal? Egy diagramlap egyetlen diagramot tartalmaz. Van egy lapfül, de nem munkalap. Nos, mint kiderült, az objektummodellnek van egy Charts nevű gyűjteménye. Ez a gyűjtemény tartalmazza a munkafüzet összes diagramlap-objektumát (és nem tartalmazza a munkalapba ágyazott diagramokat).
És hogy a dolgok logikusak maradjanak, van egy másik gyűjtemény is, a Sheets. A Lapok gyűjtemény egy munkafüzetben lévő összes lapot (munkalapokat és diagramlapokat) tartalmazza. A Táblázatok gyűjtemény akkor hasznos, ha egy munkafüzet összes lapjával szeretne dolgozni, és nem érdekli, hogy munkalapok vagy diagramlapok.
Tehát egyetlen Lap1 nevű munkalap két gyűjtemény tagja: a Munkalapok gyűjteménynek és a Munkalapok gyűjteménynek. Kétféleképpen hivatkozhat rá:
Munkalapok („1. lap”)
Munkalapok („1. lap”)
Navigálás a hierarchiában
Ha Excel-objektumokkal szeretne dolgozni, akkor mindegyik az Application objektum alatt található. Tehát kezdje az Application beírásával .
Az Excel objektummodelljében minden más objektum az Application objektum alatt található. Ezeket az objektumokat úgy érheti el, hogy lejjebb lép a hierarchiában, és összekapcsolja az úton lévő objektumokat a pont (.) operátorral. A Book1.xlsx nevű munkafüzet objektum eléréséhez kezdje az Application objektummal, és navigáljon le a Workbooks gyűjtemény objektumhoz:
Application.Workbooks ("Könyv1.xlsx")
Ha tovább szeretne navigálni egy adott munkalaphoz, adjon hozzá egy pontoperátort, és nyissa meg a Munkalapok gyűjtőobjektumot:
Alkalmazás. Munkafüzetek (“Könyv1.xlsx”). Munkalapok (1)
Még nincs elég messze? Ha valóban szeretné lekérni az értéket a Book1.xlsx nevű munkafüzet első munkalapjának A1 cellájából, akkor még egy szinttel kell navigálnia a Range objektumhoz:
Alkalmazás.Munkafüzetek(“Könyv1.xlsx”).Munkalapok(1).Tartomány(“A1”).Érték
Ha ilyen módon hivatkozik egy Range objektumra, azt teljesen minősített hivatkozásnak nevezzük . Pontosan elmondta az Excelnek, hogy melyik tartományt szeretné, melyik munkalapon és melyik munkafüzetben, és semmit sem hagyott a képzeletre. A képzelőerő jó az emberekben, de nem olyan jó a számítógépes programokban.
Egyébként a munkafüzetek nevében is van egy pont, amely elválasztja a fájlnevet a kiterjesztéstől (például Book1.xlsx). Ez csak véletlen egybeesés. A fájlnévben lévő pontnak semmi köze a pont operátorhoz.
Objektumhivatkozások egyszerűsítése
Ha minden objektumhivatkozást teljes mértékben minősítenie kellene, a kód meglehetősen hosszú lenne, és nehezebb lenne elolvasni. Szerencsére az Excel rendelkezik néhány gyorsbillentyűvel, amelyek javíthatják az olvashatóságot (és megtakaríthatják a gépelést). Kezdetben mindig az Application objektumot feltételezi a rendszer. Csak néhány eset van, amikor van értelme begépelni. Az Alkalmazásobjektum hivatkozás elhagyása a példát erre rövidíti
Munkafüzetek (“Könyv1.xlsx”). Munkalapok (1). Tartomány (“A1”). Érték
Ez elég jó előrelépés. De várj, van még. Ha biztos abban, hogy a Book1.xlsx az aktív munkafüzet, akkor ezt a hivatkozást is kihagyhatja. Most már ráérsz
Munkalapok(1).Tartomány(“A1”).Érték
Most már eljutsz valahova. Kitaláltad a következő parancsikont? Úgy van. Ha tudja, hogy az első munkalap az aktuálisan aktív munkalap, az Excel ezt a hivatkozást feltételezi, és lehetővé teszi a gépelést
Tartomány(“A1”).Érték
Ellentétben azzal, amit egyesek gondolnak, az Excel nem rendelkezik Cell objektummal. A cella egyszerűen egy Range objektum, amely csak egy elemből áll.
Az itt leírt gyorsbillentyűk nagyszerűek, de veszélyesek is lehetnek. Mi van, ha csak a Book1.xlsx fájlt gondolja az aktív munkafüzetnek? Hibaüzenetet kaphat, vagy ami még rosszabb, rossz értéket kaphat, és nem is veszi észre, hogy rossz. Emiatt gyakran a legjobb az objektumhivatkozások teljes minősítése.
A With-End With szerkezet segít a hivatkozások teljes minősítésében, de segít a kód olvashatóbbá tételében és csökkenti a gépelést. A két világ legjobbja!