Programuj w VBA i rozszerzaj możliwości Excela 2013, 2016 i 2019
Twórz własne aplikacje i dodatki do programu Excel
Pracuj efektywniej dzięki językowi VBA
W środku znajdziesz wszystko, czego potrzebujesz, aby szybko rozpocząć programowanie w języku VBA. Niezależnie od tego, czy chcesz być bardziej produktywny, zautomatyzować nużące zadania, czy stworzyć własną, zabójczą aplikację, książka Excel. Programowanie w VBA dla bystrzaków. Wydanie V zapewni Ci podstawową wiedzę na temat elementów i koncepcji programowania w Excelu. Skorzystaj z przyjaznych porad na temat najprostszych sposobów tworzenia niestandardowych okien dialogowych, pasków narzędzi i menu i twórz aplikacje Excel dostosowane do Twoich unikalnych potrzeb!
W książce:
- Automatyzacja nużących zadań z rutynowym przetwarzaniem danych
- Tworzenie makr, które przetwarzają i formatują dane
- Tworzenie dynamicznie generowanych tabel przestawnych i wykresów
- Niestandardowe funkcje arkuszowe
- Tworzenie własnych aplikacji w Excelu
Rozdziały:
O autorze 15
Wstęp 17
CZĘŚĆ I: WSTĘP DO PROGRAMOWANIA W VBA 23
Rozdział 1: Czym jest VBA? 25
- No dobrze, czym jest więc VBA? 25
- Co można zrobić za pomocą VBA? 26
- Wprowadzanie bloków tekstu 27
- Automatyzacja często wykonywanego zadania 27
- Automatyzacja powtarzalnych operacji 27
- Tworzenie własnego polecenia 28
- Tworzenie własnego przycisku 28
- Tworzenie własnych funkcji arkusza kalkulacyjnego 28
- Tworzenie własnych dodatków do Excela 28
- Zalety i wady języka VBA 28
- Zalety języka VBA 28
- Wady języka VBA 29
- VBA w pigułce 30
- Kompatybilność wersji Excela 32
Rozdział 2: Szybkie zanurzenie 33
- Przygotowanie do pracy 33
- Plan działania 34
- Stawiamy pierwsze kroki 34
- Rejestrowanie makra 35
- Testowanie makra 36
- Podgląd kodu makra 37
- Modyfikowanie makra 39
- Zapisywanie skoroszytów zawierających makra 40
- Bezpieczeństwo makr 40
- Więcej o makrze NameAndTime 42
CZĘŚĆ II: JAK VBA WSPÓŁPRACUJE Z EXCELEM? 45
Rozdział 3: Praca w edytorze VBE 47
- Czym jest Visual Basic Editor? 47
- Uruchamianie edytora VBE 48
- Zapoznanie z komponentami edytora VBE 48
- Praca z oknem Project 50
- Dodawanie nowego modułu VBA 51
- Usuwanie modułu VBA 52
- Eksportowanie i importowanie obiektów 52
- Praca z oknem Code 53
- Minimalizowanie i maksymalizowanie okien 53
- Tworzenie modułu 54
- Wprowadzanie kodu VBA do modułu 55
- Bezpośrednie wprowadzanie kodu 55
- Używanie rejestratora makr 58
- Kopiowanie kodu VBA 60
- Dostosowywanie środowiska VBA 61
- Karta Editor 61
- Karta Editor Format 64
- Karta General 65
- Karta Docking 65
Rozdział 4: Wprowadzenie do modelu obiektowego w Excelu 67
- Czy Excel to obiekt? 68
- Wspinaczka po hierarchii obiektów 68
- Zapoznanie z kolekcjami 69
- Odwoływanie się do obiektów 70
- Nawigacja po hierarchii obiektów 71
- Upraszczanie odwołań do obiektów 71
- Właściwości i metody obiektów 72
- Właściwości obiektów 73
- Metody obiektów 75
- Zdarzenia obiektów 77
- Poszukiwanie dodatkowych informacji 77
- System pomocy VBA 77
- Narzędzie Object Browser 78
- Automatyczna lista właściwości i metod 79
Rozdział 5: Procedury Sub i Function w języku VBA 81
- Procedury Sub a funkcje 81
- Rzut oka na procedury Sub 82
- Rzut oka na procedury Function 82
- Nazwy procedur Sub i Function 83
- Uruchamianie procedur Sub 84
- Bezpośrednie uruchamianie procedur Sub 86
- Uruchamianie procedur z poziomu okna dialogowego Makro 86
- Uruchamianie makr za pomocą skrótów klawiszowych 87
- Uruchamianie procedur przy użyciu przycisków i kształtów 88
- Uruchamianie procedur z poziomu innych procedur 90
- Uruchamianie procedur Function 90
- Wywoływanie funkcji z poziomu procedur Sub 91
- Wywoływanie funkcji z poziomu formuł arkusza 91
Rozdział 6: Używanie rejestratora makr 95
- Podstawy rejestrowania makr 96
- Przygotowania do rejestrowania makr 97
- Względne czy bezwzględne? 98
- Rejestrowanie makr w trybie odwołań bezwzględnych 98
- Rejestrowanie makr w trybie odwołań względnych 99
- Co jest rejestrowane? 100
- Opcje rejestratora makr 102
- Nazwa makra 102
- Klawisz skrótu 102
- Opcja "Przechowuj makro w" 103
- Opis 103
- Czy to coś jest wydajne? 103
CZĘŚĆ III: PODSTAWY PROGRAMOWANIA 107
Rozdział 7: Kluczowe elementy języka VBA 109
- Stosowanie komentarzy w kodzie VBA 109
- Używanie zmiennych, stałych i typów danych 111
- Pojęcie zmiennej 111
- Czym są typy danych w języku VBA? 113
- Deklarowanie zmiennych i określanie ich zasięgu 114
- Stałe 120
- Stałe predefiniowane 121
- Łańcuchy znaków 122
- Daty i godziny 122
- Instrukcje przypisania 123
- Przykłady instrukcji przypisania 124
- O znaku równości 124
- Proste operatory 124
- Praca z tablicami 126
- Deklarowanie tablic 126
- Tablice wielowymiarowe 127
- Tablice dynamiczne 128
- Stosowanie etykiet 129
Rozdział 8: Praca z obiektami Range 131
- Szybka powtórka 131
- Inne sposoby odwoływania się do zakresu 133
- Właściwość Cells 133
- Właściwość Offset 134
- Wybrane właściwości obiektu Range 135
- Właściwość Value 136
- Właściwość Text 137
- Właściwość Count 137
- Właściwości Column i Row 137
- Właściwość Address 138
- Właściwość HasFormula 138
- Właściwość Font 139
- Właściwość Interior 141
- Właściwość Formula 141
- Właściwość NumberFormat 142
- Wybrane metody obiektu Range 142
- Metoda Select 143
- Metody Copy i Paste 143
- Metoda Clear 144
- Metoda Delete 144
Rozdział 9: Praca z funkcjami VBA i arkusza kalkulacyjnego 145
- Co to jest funkcja? 145
- Stosowanie wbudowanych funkcji VBA 146
- Przykłady funkcji języka VBA 146
- Funkcje języka VBA, które robią coś więcej niż tylko zwracanie wartości 149
- Odkrywanie funkcji języka VBA 149
- Używanie funkcji arkuszowych z poziomu kodu VBA 152
- Przykłady zastosowania funkcji arkuszowych 153
- Wprowadzanie funkcji arkuszowych 155
- Więcej o użyciu funkcji arkuszowych 156
- Używanie własnych funkcji 156
Rozdział 10: Kontrolowanie przepływu sterowania i podejmowanie decyzji 159
- Zabierz się za przepływ, kolego 160
- Instrukcja GoTo 160
- Decyzje, decyzje 162
- Struktura If-Then 162
- Struktura Select Case 166
- Entliczek, pętliczek - czyli jak używać pętli? 169
- Pętla For-Next 169
- Pętla Do-While 174
- Pętla Do-Until 174
- Użycie pętli For Each-Next z kolekcjami 175
Rozdział 11: Automatyczne procedury i zdarzenia 177
- Przygotowanie do wielkiego zdarzenia 177
- Czy zdarzenia są przydatne? 179
- Programowanie procedur obsługi zdarzeń 180
- Gdzie jest umieszczony kod VBA? 180
- Tworzenie procedury obsługi zdarzenia 181
- Przykłady wprowadzające 183
- Zdarzenie Open dla skoroszytu 183
- Zdarzenie BeforeClose dla skoroszytu 185
- Zdarzenie BeforeSave dla skoroszytu 186
- Przykłady zdarzeń aktywacyjnych 187
- Zdarzenia aktywacji i dezaktywacji arkusza 187
- Zdarzenia aktywacji i dezaktywacji skoroszytu 188
- Zdarzenia aktywacji skoroszytu 189
- Inne zdarzenia dotyczące arkusza 189
- Zdarzenie BeforeDoubleClick 190
- Zdarzenie BeforeRightClick 190
- Zdarzenie Change 191
- Zdarzenia niezwiązane z obiektami 193
- Zdarzenie OnTime 193
- Zdarzenia naciśnięcia klawisza 195
Rozdział 12: Techniki obsługi błędów 197
- Rodzaje błędów 197
- Błędny przykład 198
- To makro nie jest idealne 199
- Makro wciąż nie jest idealne 200
- Czy teraz makro jest idealne? 200
- Rezygnacja z ideału 201
- Inny sposób obsługi błędów 202
- Korekta procedury EnterSquareRoot 202
- O instrukcji On Error 203
- Obsługa błędów - szczegółowe informacje 203
- Wznawianie wykonywania kodu po wystąpieniu błędu 204
- Obsługa błędów w pigułce 205
- Kiedy ignorować błędy? 206
- Rozpoznawanie określonych błędów 206
- Zamierzony błąd 208
Rozdział 13: Dezynsekcja kodu, czyli jak walczyć z pluskwami 211
- Rodzaje pluskiew 211
- Podstawy entomologii, czyli jak zidentyfikować pluskwę 213
- Metody i techniki walki z pluskwami 214
- Przeglądanie kodu VBA 214
- Umieszczanie funkcji MsgBox w kluczowych miejscach kodu 215
- Umieszczanie polecenia Debug.Print w kluczowych miejscach kodu 216
- Korzystanie z debugera VBA 217
- Kilka słów o debugerze 218
- Ustawianie punktów przerwań w kodzie programu 218
- Zastosowanie okna Watch 221
- Zastosowanie okna Locals 223
- Jak zredukować liczbę błędów w kodzie programu? 223
Rozdział 14: Przykłady i techniki programowania w języku VBA 225
- Przetwarzanie zakresów komórek 226
- Kopiowanie zakresów 227
- Kopiowanie zakresu o zmiennej wielkości 227
- Zaznaczanie komórek do końca wiersza lub kolumny 229
- Zaznaczanie całego wiersza lub całej kolumny 230
- Przenoszenie zakresów 230
- Wydajne przetwarzanie komórek zaznaczonego zakresu przy użyciu pętli 231
- Wydajne przetwarzanie komórek zaznaczonego zakresu przy użyciu pętli (część II) 233
- Wprowadzanie wartości do komórki 233
- Określanie typu zaznaczonego zakresu 234
- Identyfikowanie zaznaczeń wielokrotnych 235
- Zmiana ustawień Excela 236
- Zmiana ustawień logicznych (opcje typu Boolean) 236
- Zmiana innych opcji (typu non-Boolean) 237
- Praca z wykresami 237
- Metoda AddChart kontra metoda AddChart2 238
- Modyfikowanie typu wykresu 240
- Przechodzenie w pętli przez elementy kolekcji ChartObjects 240
- Modyfikowanie właściwości wykresu 241
- Zmiana formatowania wykresów 241
- Jak przyspieszyć działanie kodu VBA? 243
- Wyłączanie aktualizacji ekranu 243
- Wyłączenie automatycznego przeliczania skoroszytu 244
- Wyłączanie irytujących ostrzeżeń 244
- Upraszczanie odwołań do obiektów 245
- Deklarowanie typów zmiennych 246
- Zastosowanie struktury With-End With 246
CZĘŚĆ IV: KOMUNIKACJA Z UŻYTKOWNIKIEM 249
Rozdział 15: Proste okna dialogowe 251
- Co zamiast formularzy UserForm? 251
- Funkcja MsgBox 252
- Wyświetlanie prostych okien dialogowych 253
- Pobieranie odpowiedzi z okna dialogowego 254
- Dostosowywanie wyglądu okien dialogowych do własnych potrzeb 256
- Funkcja InputBox 258
- Składnia funkcji InputBox 258
- Przykład zastosowania funkcji InputBox 259
- Inny rodzaj okna dialogowego InputBox 260
- Metoda GetOpenFilename 262
- Składnia metody GetOpenFilename 262
- Przykład zastosowania metody GetOpenFilename 262
- Metoda GetSaveAsFilename 265
- Pobieranie nazwy folderu 265
- Wyświetlanie wbudowanych okien dialogowych programu Excel 266
Rozdział 16: Wprowadzenie do formularzy UserForm 269
- Kiedy używać formularzy UserForm? 270
- Tworzenie formularzy UserForm - wprowadzenie 271
- Praca z formularzami UserForm 272
- Wstawianie nowego formularza UserForm 272
- Umieszczanie formantów na formularzu UserForm 272
- Modyfikacja właściwości formantów formularza UserForm 274
- Przeglądanie okna Code formularza UserForm 276
- Wyświetlanie formularzy UserForm 276
- Pobieranie i wykorzystywanie informacji z formularzy UserForm 277
- Przykład tworzenia formularza UserForm 277
- Tworzenie formularza UserForm 278
- Dodawanie przycisków poleceń (formanty CommandButton) 279
- Dodawanie przycisków opcji (formanty OptionButton) 279
- Dodawanie procedur obsługi zdarzeń 282
- Tworzenie makra, które wyświetla formularz na ekranie 283
- Udostępnianie makra użytkownikowi 284
- Testowanie działania makra 285
Rozdział 17: Praca z formantami formularza UserForm 289
- Rozpoczynamy pracę z formantami formularzy UserForm 290
- Dodawanie formantów 290
- Wprowadzenie do właściwości formantów 291
- Formanty okien dialogowych - szczegóły 294
- Formant CheckBox (pole wyboru) 294
- Formant ComboBox (pole kombi) 295
- Formant CommandButton (przycisk polecenia) 296
- Formant Frame (pole grupy) 296
- Formant Image (pole obrazu) 297
- Formant Label (pole etykiety) 298
- Formant ListBox (pole listy) 298
- Formant MultiPage 300
- Formant OptionButton (przycisk opcji) 300
- Formant RefEdit (pole zakresu) 301
- Formant ScrollBar (pasek przewijania) 302
- Formant SpinButton (pokrętło) 303
- Formant TabStrip (pole karty) 303
- Formant TextBox (pole tekstowe) 304
- Formant ToggleButton (przycisk przełącznika) 305
- Praca z formantami w oknach dialogowych 305
- Zmiana rozmiarów i przenoszenie formantów w inne miejsce 305
- Rozmieszczanie i wyrównywanie położenia formantów w oknie dialogowym 306
- Obsługa użytkowników preferujących korzystanie z klawiatury 307
- Testowanie formularzy UserForm 309
- Estetyka okien dialogowych 309
Rozdział 18: Techniki pracy z formularzami UserForm 311
- Używanie własnych okien dialogowych 312
- Przykładowy formularz UserForm 312
- Tworzenie okna dialogowego 312
- Tworzenie kodu procedury wyświetlającej okno dialogowe 315
- Udostępnianie makra użytkownikowi 315
- Testowanie okna dialogowego 316
- Dodawanie procedur obsługi zdarzeń 316
- Sprawdzanie poprawności danych 318
- Teraz okno dialogowe działa tak, jak powinno! 319
- Zastosowanie formantów ListBox 319
- Wypełnianie listy 320
- Identyfikowanie wybranego elementu listy 321
- Identyfikowanie wielu zaznaczonych elementów listy 322
- Zaznaczanie zakresów 324
- Praca z wieloma grupami formantów OptionButton 326
- Zastosowanie formantów SpinButton oraz TextBox 327
- Wykorzystywanie formularza UserForm jako wskaźnika postępu zadania 329
- Tworzenie okna dialogowego dla wskaźnika postępu 329
- Procedury 330
- Jak to działa? 331
- Tworzenie niemodalnych okien dialogowych z wieloma kartami 332
- Wyświetlanie wykresów na formularzach UserForm 334
- Lista kontrolna tworzenia i testowania okien dialogowych 335
Rozdział 19: Dostęp do makr z poziomu interfejsu użytkownika 339
- Dostosowywanie Wstążki 340
- Ręczne dopasowywanie Wstążki do własnych potrzeb 340
- Dodawanie do Wstążki przycisku własnego makra 342
- Dostosowywanie Wstążki za pomocą kodu XML 343
- Dostosowywanie menu podręcznego 348
- Dodawanie nowego elementu do menu podręcznego Cell 349
- Czym bieżąca wersja różni się od Excela 2007? 351
CZĘŚĆ V: OD TEORII DO PRAKTYKI 353
Rozdział 20: Jak tworzyć własne funkcje arkuszowe i jak przeżyć, aby o tym opowiedzieć? 355
- Dlaczego tworzymy własne funkcje? 356
- Podstawowe informacje o funkcjach VBA 357
- Tworzenie funkcji 358
- Praca z argumentami funkcji 358
- Funkcje bezargumentowe 359
- Funkcje jednoargumentowe 359
- Funkcje z dwoma argumentami 361
- Funkcje pobierające zakres jako argument 362
- Funkcje z argumentami opcjonalnymi 364
- Funkcje opakowujące 366
- Funkcja NumberFormat 367
- Funkcja ExtractElement 367
- Funkcja SayIt 368
- Funkcja IsLike 369
- Funkcje zwracające tablice 369
- Zwracanie tablicy zawierającej nazwy miesięcy 369
- Zwracanie posortowanej listy 370
- Okno dialogowe Wstawianie funkcji 371
- Wyświetlanie opisów funkcji 372
- Dodawanie opisów argumentów 373
Rozdział 21: Tworzenie dodatków 375
- No dobrze... czym zatem są dodatki? 375
- Po co tworzy się dodatki? 376
- Praca z dodatkami 377
- Podstawy tworzenia dodatków 378
- Tworzymy przykładowy dodatek 380
- Konfiguracja skoroszytu 380
- Testowanie skoroszytu 382
- Tworzenie opisów dodatku 383
- Ochrona kodu VBA 383
- Tworzenie dodatku 384
- Otwieranie dodatku 384
- Dystrybucja dodatków 385
- Modyfikowanie dodatków 386
CZĘŚĆ VI: DEKALOGI 387
Rozdział 22: Dziesięć przydatnych wskazówek ułatwiających pracę z edytorem VBE 389
- Używanie komentarzy blokowych 390
- Kopiowanie wielu wierszy kodu jednocześnie 391
- Przechodzenie między modułami i procedurami 391
- Przechodzenie do kodu wybranej funkcji 391
- Jak pozostać w kodzie właściwej procedury 392
- Krokowe wykonywanie programu 393
- Przechodzenie do wybranego wiersza w kodzie 394
- Zatrzymywanie działania programu w określonym miejscu 394
- Przeglądanie początku i końca wartości długich zmiennych łańcuchowych 395
- Wyłączanie automatycznego sprawdzania składni 396
Rozdział 23: Źródła pomocy dla języka VBA 399
- Pozwól Excelowi napisać kod dla Ciebie 399
- Korzystanie z kodu pobranego z internetu 401
- Korzystanie z forów użytkowników 401
- Blogi ekspertów 402
- Materiały szkoleniowe w serwisie YouTube 403
- Uczestnictwo w szkoleniach na żywo i online 403
- Microsoft Office Dev Center 404
- Analiza innych plików Excela 404
- Zapytaj lokalnego guru Excela 404
Rozdział 24: Dziesięć rzeczy, które powinieneś robić i których nie powinieneś robić w języku VBA 405
- Zawsze deklaruj wszystkie zmienne 406
- Nigdy nie powinieneś mylić hasła chroniącego kod VBA z bezpieczeństwem aplikacji 406
- Zawsze staraj się wyczyścić i zoptymalizować kod aplikacji 407
- Nigdy nie umieszczaj wszystkiego w jednej procedurze 408
- Zawsze powinieneś rozważyć zastosowanie innego oprogramowania 408
- Nigdy nie zakładaj, że każdy użytkownik zezwala na uruchamianie makr 408
- Zawsze staraj się eksperymentować z nowymi rozwiązaniami 409
- Nigdy z góry nie zakładaj, że Twój kod będzie poprawnie działał z innymi wersjami Excela 409
- Zawsze pamiętaj o użytkownikach Twojej aplikacji 410
- Nigdy nie zapominaj o tworzeniu kopii zapasowych 410