Ez az oktatóanyag a VBA ActiveWorkbook és a ThisWorkbook közötti különbséget tárgyalja.
ActiveWorkbook kontra ThisWorkbook
Fontos tudni, hogy mi a különbség az ActiveWorkbook és a ThisWorkbook között a VBA -ban:
Az ActiveWorkbook az a munkafüzet, amely jelenleg aktív (hasonlóan ahhoz, ahogy az ActiveSheet az aktuálisan aktív lap). Ez a munkafüzet az a munkafüzet, amelyben a VBA kód tárolódik. Ez a munkakönyv soha nem fog változni.
Ez a munkakönyv
Gondoljon úgy a ThisWorkbookra, mint egy objektumváltozóra, amely lehetővé teszi, hogy hivatkozzon az éppen futó kódot tartalmazó munkafüzetre.
Ez a kód egy MessageBox -ot jelenít meg a ThisWorkbook nevével:
123 | Sub Show_ThisWorkbook ()MsgBox ThisWorkbook.NameEnd Sub |
ActiveWorkbook
Az ActiveWorkbook egy objektumváltozó, amely lehetővé teszi az éppen aktív munkafüzetre való hivatkozást.
Ez a kód egy MessageBox -ot fog megjeleníteni ActiveWorkbook névvel:
123 | Sub Show_ActiveWorkbook ()MsgBox ActiveWorkbook.NameEnd Sub |
A VBA feltételezi az ActiveWorkbookot
Amikor az ActiveWorkbook objektumaival (pl. Táblázatok) próbál dolgozni, nem kell kifejezetten megadnia az ActiveWorkbook objektumot. A VBA feltételezi, hogy az ActiveWorkbookra hivatkozik.
Szóval ez:
1 | ActiveWorkbook.Sheets ("Sheet1"). Tartomány ("$ A $ 5"). Érték = 1 |
Ugyanaz, mint ez:
1 | Táblázatok ("Sheet1"). Tartomány ("$ A $ 5"). Érték = 1 |
Az új vagy megnyitott munkafüzetek aktívak
Amikor létrehoz egy új munkafüzetet vagy megnyit egy munkafüzetet, a munkafüzet „aktív” lesz. Ezt a kódot saját maga láthatja, amely hozzáad egy munkafüzetet, és lekéri az új munkafüzet nevét:
1234 | Sub Show_ActiveWorkbook_Add ()MunkafüzetekMsgBox ActiveWorkbook.NameEnd Sub |
A munkafüzet hozzáadása vagy megnyitása után hozzárendelheti azt egy változóhoz az ActiveWorkbook objektum használatával. Az alábbi példákban megmutatjuk, hogyan.
Példák erre a munkakönyvre és az ActiveWorkbookra
Váltás az aktív munkafüzetre
Az aktív munkafüzet váltása a munkafüzet nevével:
1 | Munkafüzetek ("Könyv1"). Aktiválás |
Váltson az aktív munkafüzetre a munkalap rendelési számával (az 1 a munkafüzet első munkalapja)
1 | Munkafüzetek (1). Aktiválás |
Aktiválja ezt a munkafüzetet
Legyen a ThisWorkbook (ahol az éppen futó kód van tárolva) ActiveWorkbook:
1 | ThisWorkbook. Aktiválás |
Állítsa az ActiveWorkbook -ot egy változóra
Az ActiveWorkbook hozzárendelése egy munkafüzet objektumváltozóhoz:
12 | Dim wb Mint munkafüzetWb = ActiveWorkbook beállítása |
Zárja be és mentse az aktív munkafüzetet
Bezárja és elmenti az ActiveWorkbookot:
1 | ActiveWorkbook.Close SaveChanges: = Igaz |
Zárja be az aktív munkafüzetet mentés nélkül
Mentés nélkül bezárja az ActiveWorkbookot:
1 | ActiveWorkbook.Close SaveChanges: = Hamis |
ActiveWorkbook - Mentés másként
Mentés másként végrehajtja az aktív munkafüzetet.
123456789 | Sub SaveAsActiveWorkbook ()Halvány eredmény Variantkénteredmény = Application.GetSaveAsFilename (InitialFileName: = "", _FileFilter: = "Excel makró-engedélyezett munkafüzet ( *.xlsm), *.xlsm, Excel-munkafüzet ( *.xlsx), *.xlsx")Ha az eredmény = hamis, akkor térjen visszaActiveWorkbook.SaveAs eredményEnd Sub |