excel-vba Samouczek
Rozpoczęcie pracy z programem excel-vba
Szukaj…
Uwagi
Microsoft Excel zawiera kompleksowy język programowania makr o nazwie VBA. Ten język programowania zapewnia co najmniej trzy dodatkowe zasoby:
- Automatycznie prowadź program Excel z kodu za pomocą makr. W większości przypadków wszystko, co użytkownik może zrobić, manipulując programem Excel z interfejsu użytkownika, można zrobić, pisząc kod w programie Excel VBA.
- Utwórz nowe, niestandardowe funkcje arkusza.
- Interakcja programu Excel z innymi aplikacjami, takimi jak Microsoft Word, PowerPoint, Internet Explorer, Notatnik itp.
VBA oznacza Visual Basic for Applications. Jest to niestandardowa wersja czcigodnego języka programowania Visual Basic, który zasila makra Microsoft Excel od połowy lat 90.
WAŻNY
Upewnij się, że wszelkie przykłady lub tematy utworzone w tagu excel-vba są specyficzne i odpowiednie dla używania VBA z Microsoft Excel. Wszelkie sugerowane tematy lub przykłady, które są ogólne dla języka VBA, należy odrzucić, aby zapobiec powielaniu wysiłków.
przykłady na temat:
✓ Tworzenie i interakcja z obiektami arkusza
✓ KlasaWorksheetFunction
i odpowiednie metody
✓ Korzystanie z wyliczeniaxlDirection
do nawigacji w zakresie
przykłady nie na temat:
✗ Jak utworzyć pętlę „dla każdej”
Class KlasaMsgBox
i sposób wyświetlania komunikatu
✗ Używanie WinAPI w VBA
Wersje
VB
Wersja | Data wydania |
---|---|
VB6 | 01.10.1998 |
VB7 | 2001-06-06 |
WIN32 | 01.10.1998 |
WIN64 | 2001-06-06 |
PROCHOWIEC | 01.10.1998 |
Przewyższać
Wersja | Data wydania |
---|---|
16 | 01.01.2016 |
15 | 01.01.2013 |
14 | 01.01.2010 |
12 | 01.01.2007 |
11 | 01.01.2003 |
10 | 2001-01-01 |
9 | 1999-01-01 |
8 | 01.01.1997 |
7 | 1995-01-01 |
5 | 1993-01-01 |
2) | 1987-01-01 |
Deklarowanie zmiennych
Aby jawnie zadeklarować zmienne w VBA, użyj instrukcji Dim
, a następnie nazwy i typu zmiennej. Jeśli zmienna zostanie użyta bez zadeklarowania lub jeśli nie zostanie określony typ, zostanie przypisany typ Variant
.
Użyj instrukcji Option Explicit
w pierwszym wierszu modułu, aby wymusić zadeklarowanie wszystkich zmiennych przed użyciem (patrz ZAWSZE Użyj opcji „Explicit” ).
Zawsze zaleca się używanie Option Explicit
ponieważ pomaga zapobiegać błędom pisowni / pisowni i zapewnia, że zmienne / obiekty zachowają zamierzony typ.
Option Explicit
Sub Example()
Dim a As Integer
a = 2
Debug.Print a
'Outputs: 2
Dim b As Long
b = a + 2
Debug.Print b
'Outputs: 4
Dim c As String
c = "Hello, world!"
Debug.Print c
'Outputs: Hello, world!
End Sub
Wiele zmiennych można zadeklarować w jednym wierszu, używając przecinków jako separatorów, ale każdy typ musi być zadeklarowany indywidualnie , w przeciwnym razie będą domyślnie ustawione na typ Variant
.
Dim Str As String, IntOne, IntTwo As Integer, Lng As Long
Debug.Print TypeName(Str) 'Output: String
Debug.Print TypeName(IntOne) 'Output: Variant <--- !!!
Debug.Print TypeName(IntTwo) 'Output: Integer
Debug.Print TypeName(Lng) 'Output: Long
Zmienne można również zadeklarować przy użyciu przyrostków znaków typu danych ($% &! # @), Jednak ich stosowanie jest coraz bardziej odradzane.
Dim this$ 'String
Dim this% 'Integer
Dim this& 'Long
Dim this! 'Single
Dim this# 'Double
Dim this@ 'Currency
Inne sposoby deklarowania zmiennych to:
-
Static
jak:Static CounterVariable as Integer
Gdy użyjesz instrukcji statycznej zamiast instrukcji dim, zadeklarowana zmienna zachowa swoją wartość między wywołaniami.
-
Public
jak:Public CounterVariable as Integer
Zmienne publiczne mogą być stosowane w dowolnych procedurach w projekcie. Jeśli zmienna publiczna jest zadeklarowana w module standardowym lub module klasy, może być również użyta w każdym projekcie, który odwołuje się do projektu, w którym deklarowana jest zmienna publiczna.
-
Private
jak:Private CounterVariable as Integer
Zmienne prywatne mogą być używane tylko przez procedury w tym samym module.
Źródło i więcej informacji:
Otwieranie edytora Visual Basic (VBE)
Krok 1: Otwórz skoroszyt
Krok 2 Opcja A: Naciśnij klawisze Alt + F11
Jest to standardowy skrót do otwierania VBE.
Krok 2 Opcja B: Karta Deweloper -> Wyświetl kod
Najpierw należy dodać kartę programisty do wstążki. Przejdź do Plik -> Opcje -> Dostosuj wstążkę, a następnie zaznacz pole programisty.
Następnie przejdź do karty programisty i kliknij „Wyświetl kod” lub „Visual Basic”
Krok 2 Opcja C: karta Widok> Makra> Kliknij przycisk Edytuj, aby otworzyć istniejące makro
Wszystkie trzy z tych opcji otworzą Edytor Visual Basic (VBE):
Dodanie nowego odwołania do biblioteki obiektów
Procedura opisuje, jak dodać odwołanie do biblioteki obiektów, a następnie zadeklarować nowe zmienne w odniesieniu do nowych obiektów klasy biblioteki.
Poniższy przykład pokazuje, jak dodać bibliotekę PowerPoint do istniejącego projektu VB. Jak widać, obecnie biblioteka obiektów programu PowerPoint jest niedostępna.
Krok 1 : Wybierz menu Narzędzia -> Referencje…
Krok 2 : Wybierz odniesienie, które chcesz dodać. W tym przykładzie przewijamy w dół, aby znaleźć „ Microsoft PowerPoint 14.0 Object Library ”, a następnie naciśnij „ OK ”.
Uwaga: PowerPoint 14.0 oznacza, że wersja Office 2010 jest zainstalowana na komputerze.
Krok 3 : w edytorze VB, po jednoczesnym naciśnięciu Ctrl + Spacja , pojawia się opcja autouzupełniania programu PowerPoint.
Po wybraniu PowerPoint
i naciśnięciu .
, pojawi się kolejne menu ze wszystkimi opcjami obiektów związanymi z biblioteką obiektów PowerPoint. Ten przykład pokazuje, jak wybrać obiekt Application
PowerPoint.
Krok 4 : Teraz użytkownik może zadeklarować więcej zmiennych za pomocą biblioteki obiektów PowerPoint.
Zadeklaruj zmienną, która odwołuje się do obiektu Presentation
biblioteki obiektów PowerPoint.
Zadeklaruj inną zmienną, która odwołuje się do obiektu Slide
biblioteki obiektów PowerPoint.
Teraz sekcja deklaracji zmiennych wygląda jak na zrzucie ekranu poniżej, a użytkownik może zacząć używać tych zmiennych w swoim kodzie.
Wersja kodowa tego samouczka:
Option Explicit
Sub Export_toPPT()
Dim ppApp As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dim ppSlide As PowerPoint.Slide
' here write down everything you want to do with the PowerPoint Class and objects
End Sub
Witaj świecie
- Otwórz edytor Visual Basic (patrz Otwieranie edytora Visual Basic )
- Kliknij Wstaw -> Moduł, aby dodać nowy moduł:
- Skopiuj i wklej następujący kod w nowym module:
Sub hello()
MsgBox "Hello World !"
End Sub
Pozyskać :
Kliknij zieloną strzałkę „play” (lub naciśnij F5) na pasku narzędzi Visual Basic, aby uruchomić program:
Gotowe, powinieneś zobaczyć następujące okno:
Rozpoczęcie pracy z modelem obiektowym Excel
Ten przykład ma być delikatnym wprowadzeniem do modelu obiektowego Excela dla początkujących .
- Otwórz Edytor Visual Basic (VBE)
- Kliknij Widok -> Natychmiastowe okno, aby otworzyć okno natychmiastowe (lub ctrl + G ):
- Na dole VBE powinieneś zobaczyć następujące okno natychmiastowe:
To okno umożliwia bezpośrednie przetestowanie kodu VBA. Zacznijmy więc, wpisz w tej konsoli:
?Worksheets.
VBE ma intellisense, a następnie powinien otworzyć etykietkę, jak na poniższym rysunku:
Wybierz .Count z listy lub bezpośrednio wpisz .Cout
aby uzyskać:
?Worksheets.Count
- Następnie naciśnij Enter. Wyrażenie jest oceniane i powinno zwracać 1. Wskazuje liczbę arkuszy aktualnie obecnych w skoroszycie. Znak zapytania (
?
) To alias dla Debug.Print.
Arkusze jest obiektem i hrabia jest metoda. Excel ma kilka obiektów ( Workbook
, Worksheet
, Range
, Chart
...) i każdy z nich zawiera określone metody i właściwości. Pełną listę obiektów można znaleźć w dokumentacji Excel VBA . Arkusz roboczy Obiekt jest prezentowany tutaj .
Odwołanie do VBA programu Excel powinno stać się głównym źródłem informacji dotyczących modelu obiektowego Excel.
- Teraz spróbujmy innego wyrażenia, wpisz (bez znaku
?
):
Worksheets.Add().Name = "StackOveflow"
- Naciśnij enter. Powinno to utworzyć nowy arkusz
StackOverflow.
nazwieStackOverflow.
:
Aby zrozumieć to wyrażenie, musisz przeczytać funkcję Dodaj w wyżej wspomnianym podręczniku programu Excel. Znajdziesz następujące:
Add: Creates a new worksheet, chart, or macro sheet.
The new worksheet becomes the active sheet.
Return Value: An Object value that represents the new worksheet, chart,
or macro sheet.
Więc Worksheets.Add()
tworzy nowy arkusz i zwraca go. Arkusz roboczy ( bez s ) jest sam Obiektem, który można znaleźć w dokumentacji, a Name
jest jedną z jego właściwości (patrz tutaj ). Jest zdefiniowany jako:
Worksheet.Name Property: Returns or sets a String value that
represents the object name.
Tak więc, badając różne definicje obiektów, jesteśmy w stanie zrozumieć ten kod Worksheets.Add().Name = "StackOveflow"
.
Add()
tworzy i dodaje nowy arkusz i zwraca do niego odwołanie , a następnie ustawiamy jego właściwość Name na „StackOverflow”
Teraz bądźmy bardziej formalni, Excel zawiera kilka obiektów. Obiekty te mogą składać się z jednej lub kilku kolekcji obiektów Excel tej samej klasy. Tak jest w przypadku WorkSheets
który jest zbiorem obiektu Worksheet
WorkSheets
. Każdy obiekt ma pewne właściwości i metody, z którymi programista może wchodzić w interakcje.
Model obiektowy Excel odnosi się do hierarchii obiektów Excel
Na górze wszystkich obiektów znajduje się obiekt Application
, który reprezentuje samą instancję programu Excel. Programowanie w VBA wymaga dobrego zrozumienia tej hierarchii, ponieważ zawsze potrzebujemy odwołania do obiektu, aby móc wywołać metodę lub ustawić / uzyskać właściwość.
(Bardzo uproszczony) model obiektowy Excel można przedstawić jako:
Application
Workbooks
Workbook
Worksheets
Worksheet
Range
Bardziej szczegółowa wersja obiektu arkusza roboczego (tak jak w programie Excel 2007) jest pokazana poniżej,
Pełny model obiektowy Excel można znaleźć tutaj .
Wreszcie niektóre obiekty mogą mieć events
(np. Workbook.WindowActivate
), które są również częścią modelu obiektowego Excel.