Obiekty Excel VBA odnoszą się do pojedynczych „jednostek” składających się z kodu i danych. Sama aplikacja Excel jest obiektem, podobnie jak skoroszyty, arkusze, zakresy komórek i kształty. Każdy obiekt ma skojarzone właściwości i metody. Obiekty mogą również zawierać inne obiekty, a obiekt kolekcje służy do odwoływania się do grupy tych samych obiektów programu Excel.
W tym samouczku przyjrzymy się niektórym powszechnie używanym obiektom Excela.
Obiekt aplikacji
Obiekt aplikacji odnosi się do całej aplikacji Excel. Obiekt Application zawiera obiekt skoroszytu.
Poniższy kod używa właściwości WindowState obiektu Application, aby ustawić okno programu Excel na maksymalny dostępny rozmiar:
12345 | Sub MaksymalizacjaOkna Excela()Application.WindowState = xlMaximizedNapis końcowy |
Obiekt skoroszytów
Obiekt Workbooks odwołuje się do kolekcji wszystkich aktualnie otwartych skoroszytów programu Excel.
Poniższy kod używa metody Workbooks.Add w celu utworzenia nowego skoroszytu i dodania go do kolekcji:
12345 | Sub Dodawanie nowego zeszytu do kolekcji zeszytów()Skoroszyty.DodajNapis końcowy |
Możesz uzyskać dostęp do pojedynczego skoroszytu w kolekcji Skoroszyty za pomocą jego numeru indeksu lub nazwy. Możesz więc odwołać się do skoroszytu o nazwie ExcelWb, używając skoroszytów („ExcelWB”).
Obiekt skoroszytu
Obiekt workbook jest częścią kolekcji Workbooks. Obiekt skoroszytu zawiera kolekcję arkuszy roboczych (arkusze) i kolekcję arkuszy (arkusze, arkusze wykresów i arkusze makr). Obiekt ActiveWorkbook odwołuje się do aktywnego skoroszytu.
Poniższy kod używa metody ActiveWorkbook.Save, aby zapisać bieżący aktywny skoroszyt:
12345 | Sub Zapisywanie Skoroszytu()ActiveWorkbook.ZapiszNapis końcowy |
Arkusze obiektu
Obiekt arkuszy odnosi się do kolekcji wszystkich arkuszy roboczych, arkuszy wykresów i makr w skoroszycie. Poniższy kod używa metody Sheets.Add w celu dodania nowego arkusza o nazwie ExtraSheet po ostatnim arkuszu w skoroszycie:
123456 | Sub DodawanieNowegoArkusza()ActiveWorkbook.Sheets.Add(After:=ActiveWorkbook.Worksheets(Worksheets.Count), Count:=1, _Type:=xlWorksheet).Name = "Dodatkowy arkusz"Napis końcowy |
Zwróć uwagę, że składnia metody Sheets.Add to:
Arkusze.Dodaj(Przed, Później, Liczyć, Rodzaj) gdzie:
Opcja „Before” jest opcjonalna i określa, że nowy arkusz powinien zostać dodany przed istniejącym arkuszem.
-Po jest opcjonalny i określa, że nowy arkusz powinien zostać dodany po istniejącym arkuszu.
-Liczba jest opcjonalna i określa liczbę arkuszy do dodania.
-Typ jest opcjonalny i określa typ arkusza. xlWorksheet doda nowy arkusz, xlChart doda nowy arkusz wykresu, a xlExcel4MacroSheet lub xlExcel4IntlMacroSheet doda nowy makroarkusz. Jeśli puste, używany jest domyślny xlWorksheet.
Dostęp do pojedynczego arkusza w kolekcji Arkuszy można uzyskać za pomocą jego numeru indeksu lub nazwy. Możesz więc odwołać się do Arkusza o nazwie SheetOne, używając Arkuszy („SheetOne”).
Arkusze Obiekt
Obiekt Worksheets odwołuje się do kolekcji wszystkich arkuszy w skoroszycie. Poniższy kod używa metody Worksheets.Add, aby dodać nowy arkusz:
12345 | Sub DodawanieNowegoArkusza()Arkusze.DodajNapis końcowy |
Dostęp do pojedynczego arkusza w kolekcji Arkusze można uzyskać za pomocą jego numeru indeksu lub nazwy. Możesz więc odwołać się do arkusza roboczego o nazwie SheetTwo, używając Arkuszy roboczych („SheetTwo”).
Obiekt arkusza roboczego
Obiekt worksheet jest częścią kolekcji Worksheets. Obiekt arkusza zawiera obiekt zakresu i inne obiekty. Obiekt ActiveSheet odnosi się do aktywnego arkusza.
Poniższy kod zmienia orientację strony aktywnego arkusza na poziomą:
12345 | Sub Zmiana Orientacji na Krajobraz()ActiveSheet.PageSetup.Orientation = xlLandscapeNapis końcowy |
Zauważ, że obiekt Sheet zawiera obiekt PageSetup, a jego właściwość orientacji jest ustawiona na xlLandscape.
Obiekt zakresu
Obiekt Range może odwoływać się do pojedynczej komórki lub zestawu komórek w arkuszu. Poniższy kod pokazuje, jak używać metody Range.Select do zaznaczania komórek A1:B1:
12345 | Pod ZaznaczanieArange()Zakres("A1:B1").WybierzNapis końcowy |
Kształty obiektu
Obiekt Shapes odwołuje się do kolekcji wszystkich kształtów w arkuszu. Poniższy kod zaznaczyłby wszystkie kształty w ActiveSheet:
12345 | Pod Zaznaczanie wszystkich kształtów()ActiveSheet.Shapes.SelectAllNapis końcowy |
Kształt obiektu
Obiekt Shape jest częścią kolekcji Shapes. Poniższy kod utworzy zaokrąglony kształt prostokąta, a następnie ustawi właściwość name obiektu kształtu:
123456789 | Sub UżywającObiektuKształtu()Z Arkuszami(1).Shapes.AddShape(msoShapeRoundedRectangle, _200, 100, 80, 80).Name = "Zaokrąglony prostokąt"Kończyć zNapis końcowy |
Model obiektowy Excel VBA
Model VBA Object programu Excel opisuje hierarchię wszystkich obiektów, których można używać w programie Excel. Na przykład możesz użyć obiektu Workbooks, aby odwoływać się do wszystkich innych obiektów pośrednio lub bezpośrednio. Poniższy kod pokazuje, jak wybrać komórkę A1 przy użyciu struktury hierarchicznej:
12345 | Sub przy użyciu struktury hierarchicznej()Skoroszyty("Zeszyt1").Worksheets("Arkusz1").Range("A1").SelectNapis końcowy |
Deklarowanie i przypisywanie zmiennej obiektowej
Obiekt można zadeklarować i przypisać do zmiennej za pomocą słów kluczowych Dim i Set.
Na przykład:
12 | Dim ws jako arkusz roboczyUstaw ws = ActiveWorkbook.ActiveSheet |
Poniższy kod pokazuje, jak zadeklarować i przypisać obiekt Range do zmiennej:
12345678910111213141516 | Podrzędne przypisanieARangeToVariable()Dim rngOne As ObjectUstaw rngOne = Zakres("A1:C1")rngOne.Font.Pogrubienie = PrawdaZ rngOne.Czcionka.Pogrubienie = Prawda.Font.Name = "Calibri".Rozmiar.Czcionki = 9Kolor czcionki = RGB (35, 78, 125).Kolor.wnętrza = RGB(205, 224, 180).Borders(xlEdgeBottom).LineStyle = xlContinuousKończyć zNapis końcowy |
Wynik to:
Aby opanować VBA, konieczne jest zrozumienie, jak działają obiekty. Możesz dowiedzieć się więcej z naszego interaktywnego samouczka VBA.