Helion


Szczegóły ebooka

Excel 2019 PL. Programowanie w VBA

Excel 2019 PL. Programowanie w VBA


Możliwości arkusza MS Excel są imponujące. Uważa się, że nikt na świecie nie zna jego wszystkich funkcji i narzędzi. Mimo to wiele osób odczuwa potrzebę wykroczenia poza standardowo dostępne opcje Excela. Często jest to automatyzacja jakiegoś żmudnego zadania albo utworzenie narzędzia do specjalnych celów. I właśnie dla takich użytkowników przygotowano VBA - język, w którym można napisać prosty program do przetwarzania danych, własny dodatek do Excela albo nawet profesjonalną aplikację. Przy tym wszystkim programowania w VBA można nauczyć się błyskawicznie!

Ta książka jest jedynym w swoim rodzaju źródłem wiedzy o VBA i jego wykorzystywaniu do najróżniejszych zadań. Bardzo złożone zagadnienia zaprezentowano tu w prosty i przystępny sposób, koncentrując się na praktycznym wykorzystywaniu kodu VBA. Znalazło się tutaj wiele wskazówek, porad i ciekawych rozwiązań, które w połączeniu z pełnymi kodami programów i przykładowymi skoroszytami umożliwiają szybkie zrozumienie poszczególnych kwestii. Pokazano krok po kroku, jak pisać programy do automatyzacji wielu zadań w Excelu. Książka zawiera wszystkie wiadomości, potrzebne do nauki rejestrowania prostych makr, pisania kodu, a także do tworzenia wyrafinowanych narzędzi i aplikacji.

W tej książce między innymi:

  • dynamiczna praca ze skoroszytami i z arkuszami
  • automatyzacja operacji na tabelach przestawnych i wykresach
  • przetwarzanie danych z plików i innych źródeł
  • seryjna korespondencja elektroniczna bezpośrednio z Excela
  • projektowanie elementów interfejsu i korzystanie ze Wstążki
  • tworzenie i udostępnianie własnych dodatków do Excela

VBA dla Excela: niemożliwe staje się proste!

 

Przedmowa 23

 

CZĘŚĆ I. WPROWADZENIE DO JĘZYKA EXCEL VBA 29

Rozdział 1. Podstawy projektowania aplikacji arkusza kalkulacyjnego 31

  • Czym jest aplikacja arkusza kalkulacyjnego? 31
  • Etapy projektowania aplikacji 32
  • Określanie wymagań użytkownika 33
  • Planowanie aplikacji spełniającej wymagania użytkownika 34
  • Wybieranie odpowiedniego interfejsu użytkownika 35
    • Dostosowywanie Wstążki do potrzeb użytkownika 36
    • Dostosowywanie menu podręcznego do potrzeb użytkownika 36
    • Definiowanie klawiszy skrótu 37
    • Tworzenie niestandardowych okien dialogowych 37
    • Zastosowanie formantów ActiveX w arkuszu 38
    • Rozpoczęcie prac projektowych 39
  • Zadania realizowane z myślą o końcowym użytkowniku 40
    • Testowanie aplikacji 40
    • Uodpornianie aplikacji na błędy popełniane przez użytkownika 41
    • Nadawanie aplikacji przyjaznego, intuicyjnego i estetycznego wyglądu 43
    • Tworzenie systemu pomocy i dokumentacji przeznaczonej dla użytkownika 44
    • Dokumentowanie prac projektowych 44
    • Przekazanie aplikacji użytkownikom 44
    • Aktualizacja aplikacji (kiedy to konieczne) 45
  • Inne kwestie dotyczące projektowania 45
    • Wersja Excela zainstalowana przez użytkownika 45
    • Wersje językowe 46
    • Wydajność systemu 46
    • Tryby karty graficznej 46

Rozdział 2. Wprowadzenie do języka VBA 47

  • Rejestrator makr Excela 47
    • Tworzenie pierwszego makra 48
    • Porównanie rejestrowania makr z odwołaniami względnymi i bezwzględnymi 51
    • Inne zagadnienia związane z makrami 55
  • Praca z edytorem Visual Basic Editor (VBE) 59
    • Podstawowe elementy edytora VBE 60
    • Tajemnice okna Project 61
    • Tajemnice okna Code 63
    • Dostosowywanie środowiska edytora Visual Basic 66
    • Karta Editor Format 68
    • Karta General 69
    • Karta Docking 69
  • Podstawowe informacje o języku VBA 70
    • Obiekty 70
    • Kolekcje 71
    • Właściwości 72
  • Tajemnice obiektów Range 75
    • Wyszukiwanie właściwości obiektów Range 75
    • Właściwość Range 75
    • Właściwość Cells 76
    • Właściwość Offset 78
  • Podstawowe zagadnienia, które należy zapamiętać 80
  • Nie panikuj - nie jesteś sam 81
    • Przeczytaj resztę książki 82
    • Pozwól Excelowi napisać makro za Ciebie 82
    • Korzystaj z systemu pomocy 82
    • Używaj przeglądarki obiektów 83
    • Szukaj kodu w internecie 84
    • Wykorzystuj fora dyskusyjne użytkowników Excela 84
    • Odwiedzaj blogi ekspertów 85
    • Poszukaj szkolenia wideo na YouTube 85
    • Ucz się z Microsoft Office Dev Center 86
    • Analizuj inne aplikacje Excela, które są używane w Twojej organizacji 86
    • Zapytaj lokalnego guru 86

Rozdział 3. Podstawy programowania w języku VBA 87

  • Przegląd elementów języka VBA 87
  • Komentarze 89
  • Zmienne, typy danych i stałe 90
    • Definiowanie typów danych 91
    • Deklarowanie zmiennych 93
    • Zasięg zmiennych 95
    • Zastosowanie stałych 97
    • Praca z łańcuchami tekstu 98
    • Przetwarzanie dat 99
  • Instrukcje przypisania 100
  • Tablice 102
    • Deklarowanie tablic 102
    • Deklarowanie tablic wielowymiarowych 103
    • Deklarowanie tablic dynamicznych 103
  • Zmienne obiektowe 103
  • Typy danych definiowane przez użytkownika 105
  • Wbudowane funkcje VBA 105
  • Praca z obiektami i kolekcjami 108
    • Polecenie With ... End With 108
    • Polecenie For Each ... Next 109
  • Sterowanie sposobem wykonywania procedur 111
    • Polecenie GoTo 111
    • Polecenie If ... Then 112
    • Polecenie Select Case 115
    • Wykonywanie bloku instrukcji w ramach pętli 118

Rozdział 4. Tworzenie procedur w języku VBA 125

  • Kilka słów o procedurach 125
    • Deklarowanie procedury Sub 126
    • Zasięg procedury 126
  • Wykonywanie procedur Sub 128
    • Uruchamianie procedury przy użyciu polecenia Run Sub/UserForm 128
    • Uruchamianie procedury z poziomu okna dialogowego Makro 129
    • Uruchamianie procedury przy użyciu skrótu z klawiszem Ctrl 130
    • Uruchamianie procedury z poziomu Wstążki 131
    • Uruchamianie procedur za pośrednictwem niestandardowego menu podręcznego 131
    • Wywoływanie procedury z poziomu innej procedury 131
    • Uruchamianie procedury poprzez kliknięcie obiektu 135
    • Wykonywanie procedury po wystąpieniu określonego zdarzenia 137
    • Uruchamianie procedury z poziomu okna Immediate 137
  • Przekazywanie argumentów procedurom 138
  • Metody obsługi błędów 141
    • Przechwytywanie błędów 141
    • Przykłady kodu źródłowego obsługującego błędy 142
  • Praktyczny przykład wykorzystujący procedury Sub 145
    • Cel 145
    • Wymagania projektowe 145
    • Co już wiesz 146
    • Podejście do zagadnienia 146
    • Wstępne rejestrowanie makr 147
    • Przygotowania 148
    • Tworzenie kodu źródłowego 149
    • Tworzenie procedury sortującej 150
    • Dodatkowe testy 154
    • Usuwanie problemów 154
  • Dostępność narzędzia 157
  • Ocena projektu 158

Rozdział 5. Tworzenie funkcji w języku VBA 159

  • Porównanie procedur Sub i Function 159
  • Dlaczego tworzymy funkcje niestandardowe? 160
  • Twoja pierwsza funkcja 160
    • Zastosowanie funkcji w arkuszu 161
    • Zastosowanie funkcji w procedurze języka VBA 161
    • Analiza funkcji niestandardowej 162
  • Procedury Function 164
    • Zasięg funkcji 165
    • Wywoływanie funkcji 165
  • Argumenty funkcji 168
  • Przykłady funkcji 168
    • Funkcja bezargumentowa 168
    • Funkcje jednoargumentowe 171
    • Funkcje z dwoma argumentami 173
    • Funkcja pobierająca tablicę jako argument 174
    • Funkcje z argumentami opcjonalnymi 175
    • Funkcje zwracające tablicę VBA 176
    • Funkcje zwracające wartość błędu 178
    • Funkcje o nieokreślonej liczbie argumentów 180
  • Emulacja funkcji arkuszowej SUMA 181
  • Rozszerzone funkcje daty 183
  • Wykrywanie i usuwanie błędów w funkcjach 185
  • Okno dialogowe Wstawianie funkcji 186
    • Zastosowanie metody MacroOptions 187
    • Definiowanie kategorii funkcji 188
    • Ręczne dodawanie opisu funkcji 189
  • Zastosowanie dodatków do przechowywania funkcji niestandardowych 190
  • Korzystanie z Windows API 190
    • Przykłady zastosowania funkcji interfejsu API systemu Windows 191
    • Identyfikacja katalogu domowego systemu Windows 191
    • Wykrywanie wciśnięcia klawisza Shift 193
    • Dodatkowe informacje na temat funkcji interfejsu API 193

Rozdział 6. Obsługa zdarzeń 195

  • Co powinieneś wiedzieć o zdarzeniach 195
    • Sekwencje zdarzeń 196
    • Gdzie należy umieścić procedury obsługi zdarzeń? 196
    • Wyłączanie obsługi zdarzeń 197
    • Tworzenie kodu procedury obsługi zdarzeń 198
    • Procedury obsługi zdarzeń z argumentami 199
  • Zdarzenia poziomu skoroszytu 201
    • Zdarzenie Open 202
    • Zdarzenie Activate 202
    • Zdarzenie SheetActivate 203
    • Zdarzenie NewSheet 203
    • Zdarzenie BeforeSave 203
    • Zdarzenie Deactivate 204
    • Zdarzenie BeforePrint 204
    • Zdarzenie BeforeClose 205
  • Zdarzenia poziomu arkusza 207
    • Zdarzenie Change 208
    • Monitorowanie zmian w wybranym zakresie komórek 209
    • Zdarzenie SelectionChange 213
    • Zdarzenie BeforeDoubleClick 214
    • Zdarzenie BeforeRightClick 214
  • Zdarzenia dotyczące aplikacji 215
    • Włączanie obsługi zdarzeń poziomu aplikacji 215
    • Sprawdzanie, czy skoroszyt jest otwarty 216
    • Monitorowanie zdarzeń poziomu aplikacji 218
    • Zdarzenia niezwiązane z obiektami 218
    • Zdarzenie OnTime 219
    • Zdarzenie OnKey 220

Rozdział 7. Przykłady i techniki programowania w języku VBA 225

  • Nauka poprzez praktykę 225
  • Przetwarzanie zakresów 226
    • Kopiowanie zakresów 226
    • Przenoszenie zakresów 227
    • Kopiowanie zakresu o zmiennej wielkości 227
    • Zaznaczanie oraz identyfikacja różnego typu zakresów 229
    • Zmiana rozmiaru zakresu komórek 230
    • Wprowadzanie wartości do komórki 231
    • Wprowadzanie wartości do następnej pustej komórki 232
    • Wstrzymywanie działania makra w celu umożliwienia pobrania zakresu wyznaczonego przez użytkownika 233
    • Zliczanie zaznaczonych komórek 235
    • Określanie typu zaznaczonego zakresu 235
    • Wydajne przetwarzanie komórek zaznaczonego zakresu przy użyciu pętli 237
    • Usuwanie wszystkich pustych wierszy 240
    • Powielanie wierszy 240
    • Określanie, czy zakres zawiera się w innym zakresie 242
    • Określanie typu danych zawartych w komórce 242
    • Odczytywanie i zapisywanie zakresów 243
    • Lepsza metoda zapisywania danych do zakresu komórek 245
    • Przenoszenie zawartości tablic jednowymiarowych 246
    • Przenoszenie zawartości zakresu do tablicy typu Variant 247
    • Zaznaczanie komórek na podstawie wartości 248
    • Kopiowanie nieciągłego zakresu komórek 249
  • Przetwarzanie skoroszytów i arkuszy 251
    • Zapisywanie wszystkich skoroszytów 251
    • Zapisywanie i zamykanie wszystkich skoroszytów 251
    • Ukrywanie wszystkich komórek arkusza poza zaznaczonym zakresem 252
    • Tworzenie spisu treści zawierającego hiperłącza 253
    • Synchronizowanie arkuszy 254
  • Techniki programowania w języku VBA 254
    • Przełączanie wartości właściwości typu logicznego 255
    • Wyświetlanie daty i czasu 255
    • Wyświetlanie czasu w formie przyjaznej dla użytkownika 257
    • Pobieranie listy czcionek 258
    • Sortowanie tablicy 259
    • Przetwarzanie grupy plików 259
  • Ciekawe funkcje, których możesz użyć w swoich projektach 261
    • Funkcja FileExists 261
    • Funkcja FileNameOnly 261
    • Funkcja PathExists 262
    • Funkcja RangeNameExists 262
    • Funkcja SheetExists 263
    • Funkcja WorkbookIsOpen 263
    • Pobieranie wartości z zamkniętego skoroszytu 264
  • Użyteczne, niestandardowe funkcje arkuszowe 265
    • Funkcje zwracające informacje o formatowaniu komórki 265
    • Gadający arkusz 267
    • Wyświetlanie daty zapisania lub wydrukowania pliku 267
    • Obiekty nadrzędne 268
    • Zliczanie komórek, których wartości zawierają się pomiędzy dwoma wartościami 269
    • Wyznaczanie ostatniej niepustej komórki kolumny lub wiersza 269
    • Czy dany łańcuch tekstu jest zgodny ze wzorcem? 271
    • Wyznaczanie n-tego elementu łańcucha 272
    • Zamiana wartości na postać słowną 272
    • Funkcja wielofunkcyjna 273
    • Funkcja SHEETOFFSET 274
    • Zwracanie maksymalnej wartości ze wszystkich arkuszy 274
    • Zwracanie tablicy zawierającej unikatowe, losowo uporządkowane liczby całkowite 275
    • Porządkowanie zakresu w losowy sposób 277
    • Sortowanie zakresów 278
  • Wywołania funkcji interfejsu Windows API 279
    • Deklaracje API 279
    • Określanie skojarzeń plików 280
    • Pobieranie informacji dotyczących drukarki domyślnej 281
    • Pobieranie informacji o aktualnej rozdzielczości karty graficznej 282
    • Odczytywanie zawartości rejestru systemu Windows i zapisywanie w nim danych 283

CZĘŚĆ II. ZAAWANSOWANE TECHNIKI PROGRAMOWANIA 287

Rozdział 8. Tabele przestawne 289

  • Przykład prostej tabeli przestawnej 289
    • Tworzenie tabel przestawnych 290
    • Analiza zarejestrowanego kodu tworzącego tabelę przestawną 292
    • Optymalizacja wygenerowanego kodu tworzącego tabelę przestawną 292
  • Tworzenie złożonych tabel przestawnych 294
    • Kod tworzący tabelę przestawną 295
    • Jak działa złożona tabela przestawna? 296
  • Jednoczesne tworzenie wielu tabel przestawnych 298
  • Tworzenie odwróconych tabel przestawnych 300

Rozdział 9. Wykresy 303

  • Podstawowe wiadomości o wykresach 303
    • Lokalizacja wykresu 303
    • Rejestrator makr a wykresy 304
    • Model obiektu Chart 304
  • Tworzenie wykresów osadzonych na arkuszu danych 306
  • Tworzenie wykresu na arkuszu wykresu 307
  • Modyfikowanie wykresów 307
  • Wykorzystanie VBA do uaktywnienia wykresu 308
  • Przenoszenie wykresu 309
  • Wykorzystanie VBA do dezaktywacji wykresu 310
  • Sprawdzanie, czy wykres został uaktywniony 311
  • Usuwanie elementów z kolekcji ChartObjects lub Charts 311
  • Przetwarzanie wszystkich wykresów w pętli 312
  • Zmiana rozmiarów i wyrównywanie obiektów ChartObject 314
  • Tworzenie dużej liczby wykresów 315
  • Eksportowanie wykresów 317
    • Eksportowanie wszystkich obiektów graficznych 318
  • Zmiana danych prezentowanych na wykresie 319
    • Modyfikacja danych wykresu na podstawie aktywnej komórki 319
    • Zastosowanie języka VBA do identyfikacji zakresu danych prezentowanych na wykresie 321
  • Wykorzystanie VBA do wyświetlania dowolnych etykiet danych na wykresie 324
  • Wyświetlanie wykresu w oknie formularza UserForm 327
  • Zdarzenia związane z wykresami 329
    • Przykład wykorzystania zdarzeń związanych z wykresami 329
    • Obsługa zdarzeń dla wykresów osadzonych 331
    • Przykład zastosowania zdarzeń dla wykresów osadzonych 332
  • Jak ułatwić sobie pracę z wykresami przy użyciu VBA? 334
    • Drukowanie wykresów osadzonych na arkuszu 334
    • Tworzenie wykresów, które nie są połączone z danymi 335
    • Wykorzystanie zdarzenia MouseOver do wyświetlania tekstu 337
    • Przewijanie wykresów 339
  • Tworzenie wykresów przebiegu w czasie 340

Rozdział 10. Interakcje z innymi aplikacjami 345

  • Automatyzacja zadań w pakiecie Microsoft Office 345
    • Koncepcja wiązań 345
    • Przykład prostej automatyzacji 348
  • Sterowanie bazą danych Access z poziomu Excela 348
    • Uruchamianie zapytań bazy danych Access z poziomu Excela 348
    • Uruchamianie makr Accessa z poziomu Excela 349
  • Sterowanie edytorem Word z poziomu Excela 350
    • Przesyłanie danych z Excela do dokumentu Worda 350
    • Symulacja tworzenia korespondencji seryjnej z użyciem Worda 352
  • Sterowanie programem PowerPoint z poziomu Excela 354
    • Przesyłanie danych z Excela do prezentacji PowerPoint 354
    • Przesyłanie wszystkich wykresów z arkusza Excela do prezentacji PowerPoint 355
    • Zamiana skoroszytu na prezentację PowerPoint 356
  • Sterowanie programem Outlook z poziomu Excela 357
    • Wysyłanie aktywnego skoroszytu jako załącznika 357
    • Wysyłanie wybranego zakresu komórek jako załącznika wiadomości 358
    • Wysyłanie pojedynczego arkusza jako załącznika wiadomości 359
    • Wysyłanie wiadomości do wszystkich adresatów z listy kontaktów 360
  • Uruchamianie innych aplikacji z poziomu Excela 361
    • Zastosowanie funkcji Shell języka VBA 361
    • Zastosowanie funkcji ShellExecute interfejsu Windows API 363
    • Wykorzystanie instrukcji AppActivate 365
    • Uruchamianie okien dialogowych Panelu sterowania 365

Rozdział 11. Praca z danymi zewnętrznymi i plikami 367

  • Praca z danymi ze źródeł zewnętrznych 367
  • Wprowadzenie do zapytań Power Query 367
    • Etapy tworzenia zapytania 373
    • Odświeżanie danych z zapytania Power Query 374
    • Zarządzanie istniejącymi zapytaniami 375
    • Używanie języka VBA do tworzenia dynamicznych połączeń 375
    • Przechodzenie w pętli przez wszystkie połączenia skoroszytu 378
  • Zastosowanie ADO i VBA do pobierania danych ze źródeł zewnętrznych 378
    • Ciąg połączenia 379
    • Deklarowanie zestawu rekordów 380
    • Odwołania do biblioteki obiektów ADO 381
    • Łączenie wszystkiego razem w kodzie procedury 382
    • Zastosowanie obiektów ADO w aktywnym skoroszycie 383
  • Operacje na plikach tekstowych 385
    • Otwieranie plików tekstowych 386
    • Odczytywanie plików tekstowych 386
    • Zapisywanie danych do plików tekstowych 387
    • Przydzielanie numeru pliku 387
    • Określanie lub ustawianie pozycji w pliku 387
    • Instrukcje pozwalające na odczytywanie i zapisywanie plików 388
  • Przykłady wykonywania operacji na plikach 388
    • Importowanie danych z pliku tekstowego 388
    • Eksportowanie zakresu do pliku tekstowego 389
    • Importowanie pliku tekstowego do zakresu 390
    • Logowanie wykorzystania Excela 391
    • Filtrowanie zawartości pliku tekstowego 391
  • Najczęściej wykonywane operacje na plikach 392
    • Zastosowanie poleceń języka VBA do wykonywania operacji na plikach 392
    • Zastosowanie obiektu FileSystemObject 397
  • Pakowanie i rozpakowywanie plików 399
    • Pakowanie plików do formatu ZIP 399
    • Rozpakowywanie plików ZIP 400

CZĘŚĆ III. PRACA Z FORMULARZAMI USERFORM 403

Rozdział 12. Tworzenie własnych okien dialogowych 405

  • Zanim rozpoczniesz tworzenie formularza UserForm 405
  • Okno wprowadzania danych 405
    • Funkcja InputBox języka VBA 406
    • Metoda Application.InputBox 408
  • Funkcja MsgBox języka VBA 411
  • Metoda GetOpenFilename programu Excel 415
  • Metoda GetSaveAsFilename programu Excel 418
  • Okno wybierania katalogu 419
  • Wyświetlanie wbudowanych okien dialogowych Excela 419
  • Wyświetlanie formularza danych 422
    • Wyświetlanie formularza wprowadzania danych 422
    • Wyświetlanie formularza wprowadzania danych za pomocą VBA 423

Rozdział 13. Wprowadzenie do formularzy UserForm 425

  • Jak Excel obsługuje niestandardowe okna dialogowe 425
  • Wstawianie nowego formularza UserForm 426
  • Dodawanie formantów do formularza UserForm 426
  • Formanty okna Toolbox 427
    • Formant CheckBox 427
    • Formant ComboBox 428
    • Formant CommandButton 428
    • Formant Frame 428
    • Formant Image 428
    • Formant Label 429
    • Formant ListBox 429
    • Formant MultiPage 429
    • Formant OptionButton 429
    • Formant RefEdit 429
    • Formant ScrollBar 429
    • Formant SpinButton 430
    • Formant TabStrip 430
    • Formant TextBox 430
    • Formant ToggleButton 430
  • Modyfikowanie formantów formularza UserForm 431
  • Modyfikowanie właściwości formantów 433
    • Zastosowanie okna Properties 433
    • Wspólne właściwości 434
    • Uwzględnienie wymagań użytkowników preferujących korzystanie z klawiatury 436
  • Wyświetlanie formularza UserForm 438
    • Zmiana położenia formularza na ekranie 439
    • Wyświetlanie niemodalnych okien formularzy UserForm 439
    • Wyświetlanie formularza UserForm na podstawie zmiennej 439
    • Ładowanie formularza UserForm 440
    • Procedury obsługi zdarzeń 440
  • Zamykanie formularza UserForm 440
  • Przykład tworzenia formularza UserForm 441
    • Tworzenie formularza UserForm 442
    • Tworzenie kodu procedury wyświetlającej okno dialogowe 444
    • Testowanie okna dialogowego 445
    • Dodawanie procedur obsługi zdarzeń 445
    • Zakończenie tworzenia okna dialogowego 447
    • Zdobywanie informacji na temat zdarzeń 447
    • Zdarzenia związane z formantem SpinButton 449
    • Współpraca formantu SpinButton z formantem TextBox 450
  • Odwoływanie się do formantów formularza UserForm 452
  • Dostosowywanie okna Toolbox do własnych wymagań 454
    • Dodawanie nowych kart 454
    • Dostosowywanie lub łączenie formantów 454
    • Dodawanie nowych formantów ActiveX 455
  • Tworzenie szablonów formularzy UserForm 456
  • Lista kontrolna tworzenia i testowania formularzy UserForm 457

Rozdział 14. Przykłady formularzy UserForm 459

  • Tworzenie formularza UserForm pełniącego funkcję menu 459
    • Zastosowanie przycisków CommandButton w formularzach UserForm 459
    • Zastosowanie formantów ListBox w formularzach UserForm 460
  • Zaznaczanie zakresów przy użyciu formularza UserForm 461
  • Tworzenie okna powitalnego 463
  • Wyłączanie przycisku Zamknij formularza UserForm 465
  • Zmiana wielkości formularza UserForm 465
  • Powiększanie i przewijanie arkusza przy użyciu formularza UserForm 467
  • Zastosowania formantu ListBox 469
    • Tworzenie listy elementów formantu ListBox 469
    • Identyfikowanie zaznaczonego elementu listy formantu ListBox 473
    • Identyfikowanie wielu zaznaczonych elementów listy formantu ListBox 474
    • Wiele list w jednym formancie ListBox 475
    • Przenoszenie elementów listy formantu ListBox 476
    • Zmiana kolejności elementów listy formantu ListBox 477
    • Wielokolumnowe formanty ListBox 479
    • Zastosowanie formantu ListBox do wybierania wierszy arkusza 481
    • Uaktywnianie arkusza za pomocą formantu ListBox 483
    • Filtrowanie zawartości listy za pomocą pola tekstowego 485
  • Zastosowanie formantu MultiPage na formularzach UserForm 487
  • Korzystanie z formantów zewnętrznych 488
  • Animowanie etykiet 490

Rozdział 15. Zaawansowane techniki korzystania z formularzy UserForm 493

  • Niemodalne okna dialogowe 493
  • Wyświetlanie wskaźnika postępu zadania 497
    • Tworzenie samodzielnego wskaźnika postępu zadania 498
    • Wyświetlanie wskaźnika postępu zintegrowanego z formularzem UserForm 501
    • Tworzenie innych, niegraficznych wskaźników postępu 504
  • Tworzenie kreatorów 506
    • Konfigurowanie formantu MultiPage w celu utworzenia kreatora 507
    • Dodawanie przycisków do formularza UserForm kreatora 508
    • Programowanie przycisków kreatora 508
    • Zależności programowe w kreatorach 509
    • Wykonywanie zadań za pomocą kreatorów 511
  • Emulacja funkcji MsgBox 512
    • Emulacja funkcji MsgBox: kod funkcji MyMsgBox 512
    • Jak działa funkcja MyMsgBox 514
    • Wykorzystanie funkcji MyMsgBox do emulacji funkcji MsgBox 515
  • Formularz UserForm z formantami, których położenie można zmieniać 515
  • Formularz UserForm bez paska tytułowego 517
  • Symulacja paska narzędzi za pomocą formularza UserForm 518
  • Emulowanie panelu zadań za pomocą formularza UserForm 520
  • Formularze UserForm z możliwością zmiany rozmiaru 521
  • Obsługa wielu przycisków formularza UserForm za pomocą jednej procedury obsługi zdarzeń 525
  • Wybór koloru za pomocą formularza UserForm 528
  • Wyświetlanie wykresów na formularzach UserForm 529
    • Zapisywanie wykresu w postaci pliku GIF 530
    • Modyfikacja właściwości Picture formantu Image 530
  • Tworzenie półprzezroczystych formularzy UserForm 531
  • Układanka na formularzu UserForm 532
  • Poker na formularzu UserForm 534

CZĘŚĆ IV. TWORZENIE APLIKACJI 535

Rozdział 16. Tworzenie i wykorzystanie dodatków 537

  • Czym są dodatki? 537
    • Porównanie dodatku ze standardowym skoroszytem 537
    • Po co tworzy się dodatki? 538
  • Menedżer dodatków Excela 540
  • Tworzenie dodatków 541
  • Przykład tworzenia dodatku 542
    • Tworzenie opisu dla dodatku 544
    • Tworzenie dodatku 544
    • Instalowanie dodatku 545
    • Testowanie dodatków 546
    • Dystrybucja dodatków 546
    • Modyfikowanie dodatku 546
  • Porównanie plików XLAM i XLSM 548
    • Pliki XLAM - przynależność do kolekcji z poziomu VBA 548
    • Widoczność plików XLSM i XLAM 548
    • Arkusze i wykresy w plikach XLSM i XLAM 549
    • Dostęp do procedur VBA w dodatku 550
  • Przetwarzanie dodatków za pomocą kodu VBA 553
    • Właściwości obiektu AddIn 554
    • Korzystanie z dodatku jak ze skoroszytu 557
    • Zdarzenia związane z obiektami AddIn 558
  • Optymalizacja wydajności dodatków 558
  • Problemy z dodatkami 559
    • Upewnij się, że dodatek został zainstalowany 559
    • Odwoływanie się do innych plików z poziomu dodatku 561

Rozdział 17. Praca ze Wstążką 563

  • Wprowadzenie do pracy ze Wstążką 563
  • Dostosowywanie Wstążki do własnych potrzeb 565
    • Dodawanie nowych przycisków do Wstążki 565
    • Dodawanie przycisków do paska narzędzi Szybki dostęp 568
    • Ograniczenia w dostosowywaniu Wstążki 569
  • Modyfikowanie Wstążki za pomocą kodu RibbonX 570
    • Dodawanie przycisków do istniejącej karty 570
    • Dodawanie pola wyboru do istniejącej karty 576
    • Demo formantów Wstążki 578
    • Przykład użycia formantu DynamicMenu 585
    • Więcej wskazówek dotyczących modyfikacji Wstążki 587
  • VBA i Wstążka 589
    • Dostęp do poleceń Wstążki 589
    • Praca ze Wstążką 589
    • Aktywowanie karty 592
  • Tworzenie pasków narzędzi w starym stylu 592
    • Ograniczenia funkcjonalności tradycyjnych pasków narzędzi w Excelu 2007 i nowszych wersjach 592
    • Kod tworzący pasek narzędzi 593

Rozdział 18. Praca z menu podręcznym 597

  • Obiekt CommandBar 597
    • Rodzaje obiektów CommandBar 597
    • Wyświetlanie menu podręcznych 598
    • Odwołania do elementów kolekcji CommandBars 598
  • Odwołania do formantów obiektu CommandBar 599
  • Właściwości formantów obiektu CommandBar 601
  • Wyświetlanie wszystkich elementów menu podręcznego 601
  • Wykorzystanie VBA do dostosowywania menu podręcznego 603
    • Menu podręczne w jednodokumentowym interfejsie Excela 603
  • Resetowanie menu podręcznego 603
    • Wyłączanie menu podręcznego 606
    • Wyłączanie wybranych elementów menu podręcznego 606
    • Dodawanie nowego elementu do menu podręcznego Cell 606
    • Dodawanie nowego podmenu do menu podręcznego 608
    • Ograniczanie zasięgu modyfikacji menu podręcznego do jednego skoroszytu 610
  • Menu podręczne i zdarzenia 611
    • Automatyczne tworzenie i usuwanie menu podręcznego 611
    • Wyłączanie lub ukrywanie elementów menu podręcznego 612
    • Tworzenie kontekstowych menu podręcznych 612

Rozdział 19. Tworzenie systemów pomocy w aplikacjach 615

  • Systemy pomocy w aplikacjach Excela 615
  • Systemy pomocy wykorzystujące komponenty Excela 617
    • Wykorzystanie komentarzy do tworzenia systemów pomocy 617
    • Wykorzystanie pól tekstowych do wyświetlania pomocy 618
    • Wykorzystanie arkusza do wyświetlania tekstu pomocy 620
    • Wyświetlanie pomocy w oknie formularza UserForm 621
  • Wyświetlanie pomocy w oknie przeglądarki sieciowej 624
    • Zastosowanie plików w formacie HTML 624
    • Zastosowanie plików w formacie MHTML 625
  • Wykorzystanie systemu HTML Help 626
    • Wykorzystanie metody Help do wyświetlania pomocy w formacie HTML Help 628
    • Łączenie pliku pomocy z aplikacją 629
    • Przypisanie tematów pomocy do funkcji VBA 630

Rozdział 20. Moduły klas 631

  • Czym jest moduł klasy? 631
    • Wbudowane moduły klas 632
    • Niestandardowe moduły klas 632
  • Tworzymy klasę NumLock 633
    • Wstawianie modułu klasy 634
    • Dodawanie kodu VBA do modułu klasy 634
    • Zastosowanie klasy NumLock 635
  • Programowanie właściwości, metod i zdarzeń 636
    • Programowanie właściwości obiektów 636
    • Programowanie metod obiektów 638
    • Zdarzenia modułu klasy 638
  • Zdarzenia obiektu QueryTable 639
  • Tworzenie klas przechowujących inne klasy 642
    • Tworzenie klas CSalesRep oraz CSalesReps 642
    • Tworzenie klas CInvoice oraz CInvoices 644
    • Wypełnianie klasy nadrzędnej obiektami 645
    • Obliczanie prowizji 646

Rozdział 21. Problemy z kompatybilnością aplikacji 649

  • Co to jest kompatybilność? 649
  • Rodzaje problemów ze zgodnością 650
  • Unikaj używania nowych funkcji i mechanizmów 651
  • Czy aplikacja będzie działać na komputerach Macintosh? 653
  • Praca z 64-bitową wersją Excela 654
  • Tworzenie aplikacji dla wielu wersji narodowych 655
  • Aplikacje obsługujące wiele języków 656
  • Obsługa języka w kodzie VBA 657
  • Wykorzystanie właściwości lokalnych 658
  • Identyfikacja ustawień systemu 658
  • Ustawienia daty i godziny 660

DODATKI 661

Dodatek A. Instrukcje i funkcje VBA 663

Skorowidz 671