tytuł oryginalny: excel® vba programming for dummies®, 3rd...
TRANSCRIPT
Tytuł oryginalny Excelreg VBA Programming For Dummiesreg 3rd Edition
Tłumaczenie Ryszard Goacuternowicz Grzegorz Kowalczyk
ISBN 978-83-246-7950-8
Original English language edition Copyright copy 2013 by John Wiley amp Sons Inc Hoboken New Jersey All rights reserved including the right of reproduction in whole or in part any form This translation published by arrangement with Wiley Publishing Inc
Oryginalne angielskie wydanie copy 2013 by John Wiley amp Sons Inc Hoboken New JerseyWszelkie prawa włączając prawo do reprodukcji całości lub części w jakiejkolwiek formie zarezerwowane Tłumaczenie opublikowane na mocy porozumienia z Wiley Publishing Inc
Translation copyright copy 2014 by Helion SA
Wiley the Wiley logo For Dummies the Dummies Man logo A Reference for the Rest of Us The Dummies Way Dummies Daily The Fun and Easy Way Dummiescom Making Everything Easier and related trade dress are trademarks or registered trademarks of John Wiley and Sons Inc andor its affiliates in the United States andor other countries Used under License
Wiley the Wiley logo For Dummies the Dummies Man logo A Reference for the Rest of Us The Dummies Way Dummies Daily The Fun and Easy Way Dummiescom Making Everything Easier i związana z tym szata graficzna są markami handlowymi John Wiley and Sons Inc ilub firm stowarzyszonych w Stanach Zjednoczonych ilub innych krajach Wykorzystywane na podstawie licencji
Polish language edition published by Wydawnictwo Helion Copyright copy 2014
All rights reserved No part of this book may be reproduced or transmitted in any form or by any means electronic or mechanical including photocopying recording or by any information storage retrieval system without permission from the Publisher
Wszelkie prawa zastrzeżone Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione Wykonywanie kopii metodą kserograficzną fotograficzną a także kopiowanie książki na nośniku filmowym magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań by zawarte w tej książce informacje były kompletnei rzetelne Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich Autor oraz Wydawnictwo HELION nie ponoszą roacutewnież żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce
Drogi CzytelnikuJeżeli chcesz ocenić tę książkę zajrzyj pod adres httpdlabystrzakowpluseropiniee13pvbMożesz tam wpisać swoje uwagi spostrzeżenia recenzję
Wydawnictwo HELION ul Kościuszki 1c 44-100 Gliwicetel 32 231 22 19 32 230 98 63e-mail dlabystrzakowdlabystrzakowplWWW httpdlabystrzakowpl
Pliki z przykładami omawianymi w książce można znaleźć pod adresem ftpftphelionplprzykladye13pvbzip
Printed in Poland
bull Kup książkębull Poleć książkę bull Oceń książkę
bull Księgarnia internetowabull Lubię to raquo Nasza społeczność
Spis tre ciO autorze 15
Podzi kowania autora 17
Wst p 19Czy ta ksi ka jest dla Ciebie 19A wi c chcesz by programist hellip 20Dlaczego warto 20Co powiniene wiedzie 21Obowi zkowy podrozdzia o konwencjach typograficznych 22Sprawd ustawienia zabezpiecze 22Jak podzielona jest ksi ka 24
Cz I Wst p do programowania w VBA 24Cz II Jak VBA wspoacute pracuje z Excelem 24Cz III Podstawy programowania 24Cz IV Komunikacja z u ytkownikiem 24Cz V Od teorii do praktyki 24Cz VI Dekalogi 24
Ikony u ywane w ksi ce 25Pobieranie plikoacutew z przyk adami 25Co dalej 26
Cz I Wst p do programowania w VBA 27Rozdzia 1 Czym jest VBA 29
No dobrze czym jest wi c VBA 29Co mo na zrobi za pomoc VBA 30
Wprowadzanie blokoacutew tekstu 31Automatyzacja cz sto wykonywanego zadania 31Automatyzacja powtarzalnych operacji 31Tworzenie w asnego polecenia 31Tworzenie w asnego przycisku 31Tworzenie w asnych funkcji arkusza kalkulacyjnego 31Tworzenie w asnych dodatkoacutew do Excela 32Tworzenie kompletnych aplikacji opartych na makrach 32
Kup książkę Poleć książkę
6 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Plusy i minusy j zyka VBA 32Plusy j zyka VBA 32Minusy j zyka VBA 33
VBA w pigu ce 33Wycieczka po wersjach Excela 35
Rozdzia 2 Szybkie zanurzenie 39Przygotowanie do pracy 39Plan dzia ania 40Stawiamy pierwsze kroki 40Rejestrowanie makra 41Testowanie makra 42Podgl d kodu makra 42Modyfikacja makra 44Zapisywanie skoroszytoacutew zawieraj cych makra 45Bezpiecze stwo makr 45Wi cej o makrze NameAndTime 47
Cz II Jak VBA wspoacute pracuje z Excelem 49Rozdzia 3 Praca w edytorze VBE 51
Czym jest Visual Basic Editor 51Uruchamianie edytora VBE 51Zapoznanie z komponentami edytora VBE 52
Praca z oknem Project 54Dodawanie nowego modu u VBA 55Usuwanie modu u VBA 55Eksportowanie i importowanie obiektoacutew 56
Praca z oknem Code 56Minimalizowanie i maksymalizowanie okien 56Tworzenie modu u 57Wprowadzanie kodu VBA do modu u 58Bezpo rednie wprowadzanie kodu 58U ywanie rejestratora makr 61Kopiowanie kodu VBA 63
Dostosowywanie rodowiska VBA 63Karta Editor 64Karta Editor Format 66Karta General 67Karta Docking 68
Rozdzia 4 Wprowadzenie do modelu obiektowego w Excelu 69Czy Excel to obiekt 70Wspinaczka po hierarchii obiektoacutew 70Zapoznanie z kolekcjami 71Odwo ywanie si do obiektoacutew 71
Nawigacja po hierarchii obiektoacutew 72Upraszczanie odwo a do obiektoacutew 73
Kup książkę Poleć książkę
Spis tre ci 7
W a ciwo ci i metody obiektoacutew 74W a ciwo ci obiektoacutew 74Metody obiektoacutew 76Zdarzenia obiektoacutew 77
Poszukiwanie dodatkowych informacji 78System pomocy VBA 78Narz dzie Object Browser 79Automatyczna lista w a ciwo ci i metod 80
Rozdzia 5 Procedury Sub i Function w j zyku VBA 81Procedury Sub a funkcje 81
Rzut oka na procedury Sub 82Rzut oka na procedury Function 82Nazwy procedur Sub i Function 83
Uruchamianie procedur Sub 83Bezpo rednie uruchamianie procedur Sub 85Uruchamianie procedur w oknie dialogowym Makro 85Uruchamianie makr za pomoc skroacutetoacutew klawiszowych 86Uruchamianie procedur przy u yciu przyciskoacutew i kszta toacutew 87Uruchamianie procedur z poziomu innych procedur 89
Uruchamianie procedur Function 89Wywo ywanie funkcji z poziomu procedur Sub 90Wywo ywanie funkcji z poziomu formu arkusza 90
Rozdzia 6 U ywanie rejestratora makr 93Czy to rzeczywisto czy to VBA 93Podstawy rejestrowania makr 93Przygotowania do rejestrowania makr 95Wzgl dne czy bezwzgl dne 96
Rejestrowanie makr w trybie odwo a bezwzgl dnych 96Rejestrowanie makr w trybie odwo a wzgl dnych 97
Co jest rejestrowane 98Opcje rejestratora makr 100
Nazwa makra 100Klawisz skroacutetu 100Przechowuj makro w 101Opis 101
Czy to co jest wydajne 101
Cz III Podstawy programowania 105Rozdzia 7 Kluczowe elementy j zyka VBA 107
Stosowanie komentarzy w kodzie VBA 107U ywanie zmiennych sta ych i typoacutew danych 109
Poj cie zmiennej 109Czym s typy danych w j zyku VBA 110Deklarowanie zmiennych i okre lanie ich zasi gu 111
Kup książkę Poleć książkę
8 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Sta e 117Sta e predefiniowane 118
a cuchy znakoacutew 118Daty i godziny 119
Instrukcje przypisania 120Przyk ady instrukcji przypisania 120O znaku roacutewno ci 121Proste operatory 121
Praca z tablicami 123Deklarowanie tablic 123Tablice wielowymiarowe 124Tablice dynamiczne 124
Stosowanie etykiet 125
Rozdzia 8 Praca z obiektami Range 127Szybka powtoacuterka 127Inne sposoby odwo ywania si do zakresu 129
W a ciwo Cells 129W a ciwo Offset 130
Wybrane w a ciwo ci obiektu Range 131W a ciwo Value 131W a ciwo Text 132W a ciwo Count 133W a ciwo ci Column i Row 133W a ciwo Address 133W a ciwo HasFormula 134W a ciwo Font 134W a ciwo Interior 136W a ciwo ci Formula i FormulaLocal 136W a ciwo NumberFormat 137
Wybrane metody obiektu Range 137Metoda Select 137Metody Copy i Paste 138Metoda Clear 138Metoda Delete 139
Rozdzia 9 Praca z funkcjami VBA i arkusza kalkulacyjnego 141Co to jest funkcja 141Stosowanie wbudowanych funkcji VBA 142
Przyk ady funkcji VBA 142Funkcje VBA ktoacutere robi co wi cej ni tylko zwracanie warto ci 144Odkrywanie funkcji VBA 144
U ycie funkcji arkusza kalkulacyjnego w VBA 145Przyk ady funkcji arkusza kalkulacyjnego 148Wprowadzanie funkcji arkusza kalkulacyjnego 150Wi cej o u yciu funkcji arkusza kalkulacyjnego 151
U ycie w asnych funkcji 151
Kup książkę Poleć książkę
Spis tre ci 9
Rozdzia 10 Sterowanie przep ywem i podejmowanie decyzji 153Zabierz si za przep yw kolego 153Instrukcja GoTo 154Decyzje decyzje 155
Struktura If-Then 155Struktura Select Case 159
Entliczek p tliczek mdash czyli jak u ywa p tli 162P tle For-Next 162P tla Do-While 167P tla Do-Until 168
U ycie p tli For Each-Next z kolekcjami 168
Rozdzia 11 Automatyczne procedury i zdarzenia 171Przygotowanie do wielkiego zdarzenia 171
Czy zdarzenia s przydatne 173Programowanie procedur obs ugi zdarze 173
Gdzie jest umieszczony kod VBA 174Tworzenie procedury obs ugi zdarzenia 175Przyk ady wprowadzaj ce 176
Zdarzenie Open dla skoroszytu 176Zdarzenie BeforeClose dla skoroszytu 179Zdarzenie BeforeSave dla skoroszytu 179
Przyk ady zdarze aktywacyjnych 180Zdarzenia aktywacji i dezaktywacji arkusza 180Zdarzenia aktywacji i dezaktywacji skoroszytu 181Zdarzenia aktywacji skoroszytu 182
Inne zdarzenia dotycz ce arkusza 183Zdarzenie BeforeDoubleClick 183Zdarzenie BeforeRightClick 184Zdarzenie Change 184
Zdarzenia niezwi zane z obiektami 186Zdarzenie OnTime 186Zdarzenia naci ni cia klawisza 188
Rozdzia 12 Techniki obs ugi b doacutew 191Rodzaje b doacutew 191B dny przyk ad 192
To makro nie jest idealne 192Makro wci nie jest idealne 193Czy teraz makro jest idealne 194Rezygnacja z idea u 195
Inny sposoacuteb obs ugi b doacutew 195Korekta procedury EnterSquareRoot 195O instrukcji On Error 196
Obs uga b doacutew mdash szczegoacute owe informacje 197Wznawianie wykonywania kodu po wyst pieniu b du 197Obs uga b doacutew w pigu ce 199
Kup książkę Poleć książkę
10 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kiedy ignorowa b dy 199Rozpoznawanie okre lonych b doacutew 200
Zamierzony b d 201
Rozdzia 13 Dezynsekcja kodu czyli jak walczy z pluskwami 203Rodzaje pluskiew 203Podstawy entomologii czyli jak zidentyfikowa pluskw 205Metody i techniki walki z pluskwami 205
Przegl danie kodu VBA 206Umieszczanie funkcji MsgBox w kluczowych miejscach kodu 206Umieszczanie polecenia DebugPrint w kluczowych miejscach kodu 208Korzystanie z wbudowanych narz dzi Excela wspomagaj cych odpluskwianie kodu VBA 209
Kilka s oacutew o debuggerze 209Ustawianie punktoacutew przerwa w kodzie programu 209Zastosowanie okna Watch 212Zastosowanie okna Locals 213
Jak zredukowa liczb b doacutew w kodzie programu 215
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 217Przetwarzanie zakresoacutew komoacuterek 217
Kopiowanie zakresoacutew 218Kopiowanie zakresu o zmiennej wielko ci 219Zaznaczanie komoacuterek do ko ca wiersza lub kolumny 220Zaznaczanie ca ego wiersza lub ca ej kolumny 221Przenoszenie zakresoacutew 222Wydajne przetwarzanie komoacuterek zaznaczonego zakresu przy u yciu p tli 222Wydajne przetwarzanie komoacuterek zaznaczonego zakresu przy u yciu p tli (cz II) 224Wprowadzanie warto ci do komoacuterki 225Okre lanie typu zaznaczonego zakresu 226Identyfikowanie zaznacze wielokrotnych 226
Zmiana ustawie Excela 227Zmiana ustawie logicznych (opcje typu Boolean) 227Zmiana innych opcji (typu non-Boolean) 228
Praca z wykresami 229Metoda AddChart kontra metoda AddChart2 230Modyfikowanie typu wykresu 231Przechodzenie w p tli przez elementy kolekcji ChartObjects 232Modyfikowanie w a ciwo ci wykresu 232Zmiana formatowania wykresoacutew 233
Jak przyspieszy dzia anie kodu VBA 234Wy czanie aktualizacji ekranu 234Wy czenie automatycznego przeliczania skoroszytu 235Wy czanie irytuj cych ostrze e 236Upraszczanie odwo a do obiektoacutew 236Deklarowanie typoacutew zmiennych 237Zastosowanie struktury With-End With 238
Kup książkę Poleć książkę
Spis tre ci 11
Cz IV Komunikacja z u ytkownikiem 239Rozdzia 15 Proste okna dialogowe 241
Co zamiast formularzy UserForm 241Funkcja MsgBox 242
Wy wietlanie prostych okien dialogowych 243Pobieranie odpowiedzi z okna dialogowego 243Dostosowywanie wygl du okien dialogowych do w asnych potrzeb 244
Funkcja InputBox 247Sk adnia funkcji InputBox 248Przyk ad zastosowania funkcji InputBox 248Inny rodzaj okna dialogowego InputBox 249
Metoda GetOpenFilename 250Sk adnia metody GetOpenFilename 251Przyk ad zastosowania metody GetOpenFilename 251
Metoda GetSaveAsFilename 253Pobieranie nazwy folderu 254Wy wietlanie wbudowanych okien dialogowych programu Excel 254
Rozdzia 16 Wprowadzenie do formularzy UserForm 257Kiedy u ywa formularzy UserForm 257Tworzenie formularzy UserForm mdash wprowadzenie 258Praca z formularzami UserForm 259
Wstawianie nowego formularza UserForm 259Umieszczanie formantoacutew na formularzu UserForm 260Modyfikacja w a ciwo ci formantoacutew formularza UserForm 261Przegl danie okna Code formularza UserForm 263Wy wietlanie formularzy UserForm 263Pobieranie i wykorzystywanie informacji z formularzy UserForm 264
Przyk ad tworzenia formularza UserForm 264Tworzenie formularza UserForm 265Dodawanie przyciskoacutew polece (formanty CommandButton) 265Dodawanie przyciskoacutew opcji (formanty OptionButton) 267Dodawanie procedur obs ugi zdarze 268Tworzenie makra ktoacutere wy wietla formularz na ekranie 270Udost pnianie makra u ytkownikowi 271Testowanie dzia ania makra 272
Rozdzia 17 Praca z formantami formularza UserForm 275Rozpoczynamy prac z formantami formularzy UserForm 275
Dodawanie formantoacutew 276Wprowadzenie do w a ciwo ci formantoacutew 277
Formanty okien dialogowych mdash szczegoacute y 278Formant CheckBox (pole wyboru) 279Formant ComboBox (pole kombi) 280Formant CommandButton (przycisk polecenia) 281Formant Frame (pole grupy) 281Formant Image (pole obrazu) 282
Kup książkę Poleć książkę
12 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Formant Label (pole etykiety) 283Formant ListBox (pole listy) 283Formant MultiPage 284Formant OptionButton (przycisk opcji) 285Formant RefEdit (pole zakresu) 286Formant ScrollBar (pasek przewijania) 286Formant SpinButton (pokr t o) 287Formant TabStrip (pole karty) 288Formant TextBox (pole tekstowe) 288Formant ToggleButton (przycisk prze cznika) 289
Praca z formantami w oknach dialogowych 289Zmiana rozmiaroacutew i przenoszenie formantoacutew w inne miejsce 289Rozmieszczanie i wyroacutewnywanie po o enia formantoacutew w oknie dialogowym 290Obs uga u ytkownikoacutew preferuj cych korzystanie z klawiatury 291Testowanie formularzy UserForm 293
Estetyka okien dialogowych 293
Rozdzia 18 Techniki pracy z formularzami UserForm 295Zastosowanie w asnych okien dialogowych 295Przyk adowy formularz UserForm 296
Tworzenie okna dialogowego 296Tworzenie kodu procedury wy wietlaj cej okno dialogowe 298Udost pnianie makra u ytkownikowi 299Testowanie okna dialogowego 299Dodawanie procedur obs ugi zdarze 300Sprawdzanie poprawno ci danych 302Teraz okno dialogowe dzia a tak jak powinno 302
Wi cej przyk adoacutew formularzy UserForm 302Zastosowanie formantoacutew ListBox 303Zaznaczanie zakresoacutew 307Praca z wieloma grupami formantoacutew OptionButton 309Zastosowanie formantoacutew SpinButton oraz TextBox 310Wykorzystywanie formularza UserForm jako wska nika post pu zadania 312Tworzenie niemodalnych okien dialogowych z wieloma kartami 315Wy wietlanie wykresoacutew na formularzach UserForm 317
Lista kontrolna tworzenia i testowania okien dialogowych 318
Rozdzia 19 Udost pnianie makr z poziomu interfejsu u ytkownika 321Dostosowywanie Wst ki 321
R czne dopasowywanie Wst ki do w asnych potrzeb 322Dodawanie do Wst ki przycisku w asnego makra 324Dostosowywanie Wst ki za pomoc kodu XML 324
Dostosowywanie menu podr cznego 329Rodzaje obiektoacutew CommandBar 329Wy wietlanie wszystkich menu podr cznych 329Odwo ania do elementoacutew kolekcji CommandBars 330Odwo ania do formantoacutew obiektu CommandBar 331W a ciwo ci formantoacutew obiektu CommandBar 332
Kup książkę Poleć książkę
Spis tre ci 13
Przyk ady zastosowania VBA do modyfikacji menu podr cznego 334Resetowanie wszystkich wbudowanych menu podr cznych 334Dodawanie nowego elementu do menu podr cznego Cell 335Wy czanie menu podr cznego 337
Tworzenie w asnych paskoacutew narz dzi 338
Cz V Od teorii do praktyki 341Rozdzia 20 Jak tworzy w asne funkcje arkuszowe i jak prze y aby o tym opowiedzie 343
Dlaczego tworzymy w asne funkcje 343Podstawowe informacje o funkcjach VBA 344Tworzenie funkcji 345Praca z argumentami funkcji 345Przyk ady funkcji 346
Funkcje bezargumentowe 346Funkcje jednoargumentowe 346Funkcje z dwoma argumentami 348Funkcje pobieraj ce zakres jako argument 349Funkcje z argumentami opcjonalnymi 351
Funkcje opakowuj ce 353Funkcja NumberFormat 353Funkcja ExtractElement 354Funkcja SayIt 354Funkcja IsLike 355
Funkcje zwracaj ce tablice 355Zwracanie tablicy zawieraj cej nazwy miesi cy 355Zwracanie posortowanej listy 356
Okno dialogowe Wstawianie funkcji 358Wy wietlanie opisoacutew funkcji 358Opisy argumentoacutew 360
Rozdzia 21 Tworzenie dodatkoacutew 361No dobrzehellip czym zatem s dodatki 361Po co tworzy si dodatki 362Praca z dodatkami 363Podstawy tworzenia dodatkoacutew 364Tworzymy przyk adowy dodatek 365
Konfiguracja skoroszytu 365Testowanie skoroszytu 367Tworzenie opisoacutew dodatku 368Ochrona kodu VBA 369Tworzenie dodatku 369Otwieranie dodatku 369Dystrybucja dodatkoacutew 370Modyfikowanie dodatkoacutew 371
Kup książkę Poleć książkę
14 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Cz VI Dekalogi 373Rozdzia 22 Dziesi pyta na temat VBA (wraz z odpowiedziami) 375
Rozdzia 23 (Prawie) dziesi roacutede informacji na temat Excela 379System pomocy j zyka VBA 379Wsparcie techniczne firmy Microsoft 380Inne strony internetowe 380Blogi po wi cone Excelowi 380Google 381Bing 381Lokalne grupy u ytkownikoacutew 381Moje inne ksi ki 381
Rozdzia 24 Dziesi rzeczy ktoacutere powiniene robi w j zyku VBAi ktoacuterych nie powiniene robi 383
Zawsze deklaruj wszystkie zmienne 383Nigdy nie powiniene myli has a chroni cego kod VBA z bezpiecze stwem aplikacji 384Zawsze staraj si wyczy ci i zoptymalizowa kod aplikacji 384Nigdy nie umieszczaj wszystkiego w jednej procedurze 385Zawsze powiniene rozwa y zastosowanie innego oprogramowania 385Nigdy nie zak adaj e ka dy u ytkownik zezwala na uruchamianie makr 386Zawsze staraj si eksperymentowa z nowymi rozwi zaniami 386Nigdy z goacutery nie zak adaj e Twoacutej kod b dzie poprawnie dzia a z innymi wersjami Excela 386Zawsze pami taj o u ytkownikach Twojej aplikacji 387Nigdy nie zapominaj o tworzeniu kopii zapasowych 387
Skorowidz 389
Kup książkę Poleć książkę
Rozdzia 14
Przyk ady i technikiprogramowania w j zyku VBA
W tym rozdziale poznasz szereg przyk adoacutew technik programowania w j zyku VBA dowiesz si jak mo esz przyspieszy dzia anie kodu VBA w Twojej aplikacji
ierz e nauka programowania jest znacznie szybsza i zdecydowanie bardziejefektywna kiedy pracujemy na konkretnych przyk adach Dobrze opracowany
przyk ad o wiele lepiej obja nia zagadnienie ni najbardziej rozbudowany i szczegoacute owyale teoretyczny opis Poniewa czytasz t ksi k prawdopodobnie zgadzasz si ze mnw tej materii W tym rozdziale znajdziesz szereg przyk adoacutew demonstruj cych u ytecznepraktyczne techniki programowania w j zyku VBA
Przyk ady omawiane w tym rozdziale zosta y podzielone na kilka kategorii Oto one
Praca z zakresami
Modyfikacja ustawie Excela
Praca z wykresami
Przyspieszanie i optymalizacja dzia ania kodu VBA
Niektoacutere z prezentowanych przyk adoacutew b dziesz moacuteg od razu wykorzysta w swoichaplikacjach jednak w wi kszo ci przypadkoacutew b d wymaga y pewnego dostosowaniado Twoich aplikacji
Przetwarzanie zakresoacutew komoacuterekWi kszo zada z jakimi b dziesz si styka programuj c w j zyku VBA b dzie zapewnewymaga a mniejszego b d wi kszego przetwarzania zakresoacutew komoacuterek (aby od wie ysobie wiadomo ci na temat obiektu Range powiniene zajrze do rozdzia u 8) Kiedypracujesz z obiektami Range powiniene pami ta o nast puj cych sprawach
Kod VBA nie musi zaznacza danego zakresu aby go przetwarza
Je eli kod VBA zaznacza wybrany zakres przechowuj cy go skoroszyt musi byaktywny
W
Kup książkę Poleć książkę
218 Cz III Podstawy programowania
Rejestrator makr nie zawsze b dzie w stanie wygenerowa optymalny kod VBABardzo cz sto jednak mo esz za jego pomoc utworzy bazowe makro i potemodpowiednio zmodyfikowa kod tak aby sta si bardziej efektywny
Zazwyczaj bardzo dobrym rozwi zaniem jest nadawanie nazw zakresom komoacuterekwykorzystywanym w kodzie VBA Przyk adowo polecenie Range(Total)jestznacznie lepszym rozwi zaniem ni Range(D45) Je li w tym drugim przypadkupoacute niej wstawisz dodatkowy wiersz powy ej wiersza 45 to eby wszystko dzia a opoprawnie b dziesz musia zmodyfikowa makro tak aby korzysta o z nowegopoprawnego adresu komoacuterki a ta po wykonaniu takiej operacji b dzie mia a innyadres (D46) Aby nada nazw wybranemu zakresowi komoacuterek powiniene przejna kart FORMU Y i wybra polecenie Definiuj nazw znajduj ce si w grupiepolece Nazwy zdefiniowane
Kiedy tworzysz makro ktoacutere b dzie przetwarza o zakres komoacuterek zaznaczonyprzez u ytkownika pami taj e u ytkownik mo e zaznaczy kilka ca ych kolumnczy wierszy W wi kszo ci przypadkoacutew z pewno ci nie b dziesz chcia aby makrow p tli przechodzi o w takiej sytuacji przez wszystkie zaznaczone komoacuterki (w czniez pustymi) co mog oby zaj bardzo wiele czasu Dobre makro powinno odszukai przetwarza tylko komoacuterki ktoacutere nie s puste
Excel pozwala na jednoczesne zaznaczanie wielu zakresoacutew komoacuterek Aby to zrobi powiniene zaznaczy pierwszy zakres komoacuterek potem wcisn i przytrzymaklawisz Ctrl i zaznacza kolejne zakresy komoacuterek przy u yciu myszy Kod Twojejaplikacji powinien by przygotowany na takie sytuacje i podejmowa odpowiednieakcje
Skoroszyty z wybranymi przyk adami omawianymi w tym rozdziale znajdziesz na stronieinternetowej naszej ksi ki
Je eli chcesz samodzielnie wpisywa kod omawianych przyk adoacutew przejd do edytoraVBE naciskaj c kombinacj klawiszy lewyAlt+F11 a nast pnie wstaw nowy modu VBAi wpisz kod prezentowanych procedur Upewnij si e Twoacutej skoroszyt jest poprawnieskonfigurowany Je eli na przyk ad kod danego przyk adu odwo uje si do arkuszyo nazwach Arkusz1 i Arkusz2 upewnij si e takie arkusze istniej w Twoim skoroszycie
Kopiowanie zakresoacutewKopiowanie zakresoacutew komoacuterek mo e mia o pretendowa do miana jednej z najcz ciejwykonywanych operacji w Excelu Kiedy w czysz rejestrator makr i skopiujesz zakreskomoacuterek o adresie A1A5 do zakresu B1B5 otrzymasz nast puj ce makro
Sub CopyRange() Range(A1A5)Select SelectionCopy Range(B1)Select ActiveSheetPaste ApplicationCutCopyMode = FalseEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 219
Zwroacute uwag na ostatnie polecenie Zosta o ono wygenerowane przez naci ni cieklawisza Esc po skopiowaniu zakresu komoacuterek co spowodowa o usuni cie przerywanejlinii reprezentuj cej na arkuszu obramowanie kopiowanego zakresu
Przedstawione makro dzia a poprawnie ale zakresy komoacuterek mo na kopiowa w znaczniebardziej efektywny sposoacuteb Identyczny rezultat mo esz osi gn za pomoc proceduryktoacutera sk ada si z tylko jednego wiersza polecenia i nie zaznacza adnych komoacuterek(dzi ki czemu nie wymaga ustawiania w a ciwo ci CutCopyMode na warto False)
Sub CopyRange2() Range(A1A5)Copy Range(B1)End Sub
Procedura przedstawiona powy ej korzysta z tego e metoda Copy mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe kopiowanego zakresu Informacje o tymznalaz em w pomocy systemowej VBA Powy szy przyk ad doskonale roacutewnie ilustrujefakt e rejestrator makr nie zawsze generuje najbardziej efektywny kod
Kopiowanie zakresu o zmiennej wielko ciW wielu przypadkach konieczne jest skopiowanie zakresu komoacuterek dla ktoacuterego dok adnaliczba wierszy i kolumn okre laj cych jego wielko nie jest z goacutery znana Przyk adowomo esz dysponowa skoroszytem ledz cym tygodniow sprzeda w ktoacuterym liczba wierszyzmienia si ka dego tygodnia po wprowadzeniu nowych danych
Na rysunku 141 przedstawiam przyk ad cz sto spotykanego typu arkusza Znajduj cysi w nim zakres komoacuterek sk ada si z kilku wierszy ktoacuterych liczba zmienia si ka degodnia Poniewa nie wiesz jaki jest rozmiar zakresu w danej chwili musisz utworzykod ktoacutery b dzie dzia a bez u ywania adresu zakresu kopiowanych komoacuterek
Rysunek 141Przyk ad zakre-su ktoacutery mo e
sk ada siz dowolnej
liczby wierszy
Makro przedstawione poni ej ilustruje sposoacuteb kopiowania zakresu komoacuterek z arkuszaArkusz1 do arkusza Arkusz2 (pocz wszy od komoacuterki A1) Makro wykorzystuje w a ciwoCurrentRegion ktoacutera zwraca obiekt Range odpowiadaj cy blokowi komoacuterek otaczaj cychokre lon komoacuterk (w tym przypadku o adresie A1)
Kup książkę Poleć książkę
220 Cz III Podstawy programowania
Sub CopyCurrentRegion() Range(A1)CurrentRegionCopy Sheets(Arkusz2)Select Range(A1)Select ActiveSheetPaste Sheets(Arkusz1)Select ApplicationCutCopyMode = FalseEnd Sub
Zastosowanie w a ciwo ci CurrentRegion jest roacutewnowa ne z przej ciem na kartNARZ DZIA G OacuteWNE i wybraniem polecenia Znajd i zaznaczPrzejd do mdashspecjalnie znajduj cego si w grupie opcji Edytowanie i nast pnie zaznaczeniem opcjiBie cy obszar Aby przekona si jak to dzia a podczas wykonywania tych polecepowiniene u y rejestratora makr Zazwyczaj warto w a ciwo ci CurrentRegionreprezentuje prostok tny blok komoacuterek otoczony przez puste wiersze i kolumny
Oczywi cie mo esz zoptymalizowa kod makra przedstawionego powy ej i niezaznacza obszaru docelowego dla kopiowanych komoacuterek Makro przedstawione poni ejkorzysta z faktu e metoda Copy mo e u ywa argumentu wywo ania reprezentuj cegomiejsce docelowe kopiowanego zakresu
Sub CopyCurrentRegion2() Range(A1)CurrentRegionCopy _ Sheets(Arkusz2)Range(A1)End Sub
Je eli zakres komoacuterek ktoacutery chcesz skopiowa jest tabel (zdefiniowan przy u yciapolecenia WSTAWIANIETabeleTabela) ca e zadanie b dzie jeszcze atwiejsze Ka databela posiada swoj nazw (na przyk ad Tabela1) i automatycznie rozszerza si w miardodawania nowych wierszy
Sub CopyTable() Range(Tabela1)Copy Sheets(Arkusz2)Range(A1)End Sub
Je eli sproacutebujesz wykona procedur przedstawion powy ej przekonasz si e wiersznag oacutewka tabeli nie jest kopiowany poniewa obiekt Tabela1 nie obejmuje tegowiersza Je li chcesz aby wiersz nag oacutewka roacutewnie by kopiowany powiniene zmieniodwo anie do tabeli tak jak to zosta o przedstawione poni ej
Range(Tabela1[All])
Zaznaczanie komoacuterekdo ko ca wiersza lub kolumnyPrawdopodobnie bardzo cz sto u ywasz kombinacji klawiszy takich jak Ctrl+Shift+ czy Ctrl+Shift+ do zaznaczania zakresoacutew sk adaj cych si ze wszystkich komoacuterekod komoacuterki aktywnej a do ko ca kolumny czy wiersza Nie jest wi c chyba zaskoczenieme mo esz napisa makro ktoacutere b dzie zaznacza komoacuterki w podobny sposoacuteb
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 221
Do zaznaczania ca ego bloku komoacuterek mo esz u y w a ciwo ci CurrentRegion Ale copowiniene zrobi je eli chcesz zaznaczy powiedzmy tylko jedn kolumn z tegobloku komoacuterek Na szcz cie VBA pozwala na wykonywanie takich operacji Proceduraktoacuterej kod przedstawiam poni ej zaznacza zakres komoacuterek pocz wszy od bie cejaktywnej komoacuterki w doacute kolumny a do komoacuterki znajduj cej si o jeden wiersz powy ejpierwszej pustej komoacuterki tej kolumny Po zaznaczeniu zakresu mo esz przetwarza gow dowolny sposoacuteb mdash kopiowa komoacuterki przenosi je w inne miejsce arkusza zmieniaformatowanie i tak dalej
Sub SelectDown() Range(ActiveCell ActiveCellEnd(xlDown))SelectEnd Sub
Oczywi cie taki sam obszar mo esz roacutewnie zaznaczy r cznie Aby to zrobi powinienezaznaczy pierwsz komoacuterk nast pnie wcisn i przytrzyma klawisz Shift nacisnklawisz End i wreszcie nacisn klawisz (strza ka w doacute )
W przyk adzie wykorzystuj metod End obiektu ActiveCell ktoacutera zwraca obiekt typuRange Metoda End pobiera jeden argument okre laj cy kierunek w ktoacuterym zostaniewykonane zaznaczenie Argumentami tej metody mo e by dowolna ze sta ychprzedstawionych poni ej
xlUp
xlDown
xlToLeft
xlToRight
Pami taj e zaznaczanie zakresu nie jest potrzebne do jego przetwarzania Makroprzedstawione poni ej zmienia czcionk w komoacuterkach zmiennego zakresu (pojedynczakolumna) na pogrubion bez uprzedniego zaznaczenia zakresu
Sub MakeBold() Range(ActiveCell ActiveCellEnd(xlDown)) _ FontBold = TrueEnd Sub
Zaznaczanie ca ego wiersza lub ca ej kolumnyProcedura przedstawiona poni ej ilustruje sposoacuteb zaznaczania kolumny w ktoacuterej znajdujesi aktywna komoacuterka Makro wykorzystuje w a ciwo EntireColumn ktoacutera zwracaobiekt typu Range reprezentuj cy ca kolumn
Sub SelectColumn() ActiveCellEntireColumnSelectEnd Sub
Jak pewnie si spodziewasz w j zyku VBA dost pna jest roacutewnie w a ciwo EntireRowktoacutera zwraca obiekt typu Range reprezentuj cy ca y wiersz
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Spis tre ciO autorze 15
Podzi kowania autora 17
Wst p 19Czy ta ksi ka jest dla Ciebie 19A wi c chcesz by programist hellip 20Dlaczego warto 20Co powiniene wiedzie 21Obowi zkowy podrozdzia o konwencjach typograficznych 22Sprawd ustawienia zabezpiecze 22Jak podzielona jest ksi ka 24
Cz I Wst p do programowania w VBA 24Cz II Jak VBA wspoacute pracuje z Excelem 24Cz III Podstawy programowania 24Cz IV Komunikacja z u ytkownikiem 24Cz V Od teorii do praktyki 24Cz VI Dekalogi 24
Ikony u ywane w ksi ce 25Pobieranie plikoacutew z przyk adami 25Co dalej 26
Cz I Wst p do programowania w VBA 27Rozdzia 1 Czym jest VBA 29
No dobrze czym jest wi c VBA 29Co mo na zrobi za pomoc VBA 30
Wprowadzanie blokoacutew tekstu 31Automatyzacja cz sto wykonywanego zadania 31Automatyzacja powtarzalnych operacji 31Tworzenie w asnego polecenia 31Tworzenie w asnego przycisku 31Tworzenie w asnych funkcji arkusza kalkulacyjnego 31Tworzenie w asnych dodatkoacutew do Excela 32Tworzenie kompletnych aplikacji opartych na makrach 32
Kup książkę Poleć książkę
6 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Plusy i minusy j zyka VBA 32Plusy j zyka VBA 32Minusy j zyka VBA 33
VBA w pigu ce 33Wycieczka po wersjach Excela 35
Rozdzia 2 Szybkie zanurzenie 39Przygotowanie do pracy 39Plan dzia ania 40Stawiamy pierwsze kroki 40Rejestrowanie makra 41Testowanie makra 42Podgl d kodu makra 42Modyfikacja makra 44Zapisywanie skoroszytoacutew zawieraj cych makra 45Bezpiecze stwo makr 45Wi cej o makrze NameAndTime 47
Cz II Jak VBA wspoacute pracuje z Excelem 49Rozdzia 3 Praca w edytorze VBE 51
Czym jest Visual Basic Editor 51Uruchamianie edytora VBE 51Zapoznanie z komponentami edytora VBE 52
Praca z oknem Project 54Dodawanie nowego modu u VBA 55Usuwanie modu u VBA 55Eksportowanie i importowanie obiektoacutew 56
Praca z oknem Code 56Minimalizowanie i maksymalizowanie okien 56Tworzenie modu u 57Wprowadzanie kodu VBA do modu u 58Bezpo rednie wprowadzanie kodu 58U ywanie rejestratora makr 61Kopiowanie kodu VBA 63
Dostosowywanie rodowiska VBA 63Karta Editor 64Karta Editor Format 66Karta General 67Karta Docking 68
Rozdzia 4 Wprowadzenie do modelu obiektowego w Excelu 69Czy Excel to obiekt 70Wspinaczka po hierarchii obiektoacutew 70Zapoznanie z kolekcjami 71Odwo ywanie si do obiektoacutew 71
Nawigacja po hierarchii obiektoacutew 72Upraszczanie odwo a do obiektoacutew 73
Kup książkę Poleć książkę
Spis tre ci 7
W a ciwo ci i metody obiektoacutew 74W a ciwo ci obiektoacutew 74Metody obiektoacutew 76Zdarzenia obiektoacutew 77
Poszukiwanie dodatkowych informacji 78System pomocy VBA 78Narz dzie Object Browser 79Automatyczna lista w a ciwo ci i metod 80
Rozdzia 5 Procedury Sub i Function w j zyku VBA 81Procedury Sub a funkcje 81
Rzut oka na procedury Sub 82Rzut oka na procedury Function 82Nazwy procedur Sub i Function 83
Uruchamianie procedur Sub 83Bezpo rednie uruchamianie procedur Sub 85Uruchamianie procedur w oknie dialogowym Makro 85Uruchamianie makr za pomoc skroacutetoacutew klawiszowych 86Uruchamianie procedur przy u yciu przyciskoacutew i kszta toacutew 87Uruchamianie procedur z poziomu innych procedur 89
Uruchamianie procedur Function 89Wywo ywanie funkcji z poziomu procedur Sub 90Wywo ywanie funkcji z poziomu formu arkusza 90
Rozdzia 6 U ywanie rejestratora makr 93Czy to rzeczywisto czy to VBA 93Podstawy rejestrowania makr 93Przygotowania do rejestrowania makr 95Wzgl dne czy bezwzgl dne 96
Rejestrowanie makr w trybie odwo a bezwzgl dnych 96Rejestrowanie makr w trybie odwo a wzgl dnych 97
Co jest rejestrowane 98Opcje rejestratora makr 100
Nazwa makra 100Klawisz skroacutetu 100Przechowuj makro w 101Opis 101
Czy to co jest wydajne 101
Cz III Podstawy programowania 105Rozdzia 7 Kluczowe elementy j zyka VBA 107
Stosowanie komentarzy w kodzie VBA 107U ywanie zmiennych sta ych i typoacutew danych 109
Poj cie zmiennej 109Czym s typy danych w j zyku VBA 110Deklarowanie zmiennych i okre lanie ich zasi gu 111
Kup książkę Poleć książkę
8 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Sta e 117Sta e predefiniowane 118
a cuchy znakoacutew 118Daty i godziny 119
Instrukcje przypisania 120Przyk ady instrukcji przypisania 120O znaku roacutewno ci 121Proste operatory 121
Praca z tablicami 123Deklarowanie tablic 123Tablice wielowymiarowe 124Tablice dynamiczne 124
Stosowanie etykiet 125
Rozdzia 8 Praca z obiektami Range 127Szybka powtoacuterka 127Inne sposoby odwo ywania si do zakresu 129
W a ciwo Cells 129W a ciwo Offset 130
Wybrane w a ciwo ci obiektu Range 131W a ciwo Value 131W a ciwo Text 132W a ciwo Count 133W a ciwo ci Column i Row 133W a ciwo Address 133W a ciwo HasFormula 134W a ciwo Font 134W a ciwo Interior 136W a ciwo ci Formula i FormulaLocal 136W a ciwo NumberFormat 137
Wybrane metody obiektu Range 137Metoda Select 137Metody Copy i Paste 138Metoda Clear 138Metoda Delete 139
Rozdzia 9 Praca z funkcjami VBA i arkusza kalkulacyjnego 141Co to jest funkcja 141Stosowanie wbudowanych funkcji VBA 142
Przyk ady funkcji VBA 142Funkcje VBA ktoacutere robi co wi cej ni tylko zwracanie warto ci 144Odkrywanie funkcji VBA 144
U ycie funkcji arkusza kalkulacyjnego w VBA 145Przyk ady funkcji arkusza kalkulacyjnego 148Wprowadzanie funkcji arkusza kalkulacyjnego 150Wi cej o u yciu funkcji arkusza kalkulacyjnego 151
U ycie w asnych funkcji 151
Kup książkę Poleć książkę
Spis tre ci 9
Rozdzia 10 Sterowanie przep ywem i podejmowanie decyzji 153Zabierz si za przep yw kolego 153Instrukcja GoTo 154Decyzje decyzje 155
Struktura If-Then 155Struktura Select Case 159
Entliczek p tliczek mdash czyli jak u ywa p tli 162P tle For-Next 162P tla Do-While 167P tla Do-Until 168
U ycie p tli For Each-Next z kolekcjami 168
Rozdzia 11 Automatyczne procedury i zdarzenia 171Przygotowanie do wielkiego zdarzenia 171
Czy zdarzenia s przydatne 173Programowanie procedur obs ugi zdarze 173
Gdzie jest umieszczony kod VBA 174Tworzenie procedury obs ugi zdarzenia 175Przyk ady wprowadzaj ce 176
Zdarzenie Open dla skoroszytu 176Zdarzenie BeforeClose dla skoroszytu 179Zdarzenie BeforeSave dla skoroszytu 179
Przyk ady zdarze aktywacyjnych 180Zdarzenia aktywacji i dezaktywacji arkusza 180Zdarzenia aktywacji i dezaktywacji skoroszytu 181Zdarzenia aktywacji skoroszytu 182
Inne zdarzenia dotycz ce arkusza 183Zdarzenie BeforeDoubleClick 183Zdarzenie BeforeRightClick 184Zdarzenie Change 184
Zdarzenia niezwi zane z obiektami 186Zdarzenie OnTime 186Zdarzenia naci ni cia klawisza 188
Rozdzia 12 Techniki obs ugi b doacutew 191Rodzaje b doacutew 191B dny przyk ad 192
To makro nie jest idealne 192Makro wci nie jest idealne 193Czy teraz makro jest idealne 194Rezygnacja z idea u 195
Inny sposoacuteb obs ugi b doacutew 195Korekta procedury EnterSquareRoot 195O instrukcji On Error 196
Obs uga b doacutew mdash szczegoacute owe informacje 197Wznawianie wykonywania kodu po wyst pieniu b du 197Obs uga b doacutew w pigu ce 199
Kup książkę Poleć książkę
10 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kiedy ignorowa b dy 199Rozpoznawanie okre lonych b doacutew 200
Zamierzony b d 201
Rozdzia 13 Dezynsekcja kodu czyli jak walczy z pluskwami 203Rodzaje pluskiew 203Podstawy entomologii czyli jak zidentyfikowa pluskw 205Metody i techniki walki z pluskwami 205
Przegl danie kodu VBA 206Umieszczanie funkcji MsgBox w kluczowych miejscach kodu 206Umieszczanie polecenia DebugPrint w kluczowych miejscach kodu 208Korzystanie z wbudowanych narz dzi Excela wspomagaj cych odpluskwianie kodu VBA 209
Kilka s oacutew o debuggerze 209Ustawianie punktoacutew przerwa w kodzie programu 209Zastosowanie okna Watch 212Zastosowanie okna Locals 213
Jak zredukowa liczb b doacutew w kodzie programu 215
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 217Przetwarzanie zakresoacutew komoacuterek 217
Kopiowanie zakresoacutew 218Kopiowanie zakresu o zmiennej wielko ci 219Zaznaczanie komoacuterek do ko ca wiersza lub kolumny 220Zaznaczanie ca ego wiersza lub ca ej kolumny 221Przenoszenie zakresoacutew 222Wydajne przetwarzanie komoacuterek zaznaczonego zakresu przy u yciu p tli 222Wydajne przetwarzanie komoacuterek zaznaczonego zakresu przy u yciu p tli (cz II) 224Wprowadzanie warto ci do komoacuterki 225Okre lanie typu zaznaczonego zakresu 226Identyfikowanie zaznacze wielokrotnych 226
Zmiana ustawie Excela 227Zmiana ustawie logicznych (opcje typu Boolean) 227Zmiana innych opcji (typu non-Boolean) 228
Praca z wykresami 229Metoda AddChart kontra metoda AddChart2 230Modyfikowanie typu wykresu 231Przechodzenie w p tli przez elementy kolekcji ChartObjects 232Modyfikowanie w a ciwo ci wykresu 232Zmiana formatowania wykresoacutew 233
Jak przyspieszy dzia anie kodu VBA 234Wy czanie aktualizacji ekranu 234Wy czenie automatycznego przeliczania skoroszytu 235Wy czanie irytuj cych ostrze e 236Upraszczanie odwo a do obiektoacutew 236Deklarowanie typoacutew zmiennych 237Zastosowanie struktury With-End With 238
Kup książkę Poleć książkę
Spis tre ci 11
Cz IV Komunikacja z u ytkownikiem 239Rozdzia 15 Proste okna dialogowe 241
Co zamiast formularzy UserForm 241Funkcja MsgBox 242
Wy wietlanie prostych okien dialogowych 243Pobieranie odpowiedzi z okna dialogowego 243Dostosowywanie wygl du okien dialogowych do w asnych potrzeb 244
Funkcja InputBox 247Sk adnia funkcji InputBox 248Przyk ad zastosowania funkcji InputBox 248Inny rodzaj okna dialogowego InputBox 249
Metoda GetOpenFilename 250Sk adnia metody GetOpenFilename 251Przyk ad zastosowania metody GetOpenFilename 251
Metoda GetSaveAsFilename 253Pobieranie nazwy folderu 254Wy wietlanie wbudowanych okien dialogowych programu Excel 254
Rozdzia 16 Wprowadzenie do formularzy UserForm 257Kiedy u ywa formularzy UserForm 257Tworzenie formularzy UserForm mdash wprowadzenie 258Praca z formularzami UserForm 259
Wstawianie nowego formularza UserForm 259Umieszczanie formantoacutew na formularzu UserForm 260Modyfikacja w a ciwo ci formantoacutew formularza UserForm 261Przegl danie okna Code formularza UserForm 263Wy wietlanie formularzy UserForm 263Pobieranie i wykorzystywanie informacji z formularzy UserForm 264
Przyk ad tworzenia formularza UserForm 264Tworzenie formularza UserForm 265Dodawanie przyciskoacutew polece (formanty CommandButton) 265Dodawanie przyciskoacutew opcji (formanty OptionButton) 267Dodawanie procedur obs ugi zdarze 268Tworzenie makra ktoacutere wy wietla formularz na ekranie 270Udost pnianie makra u ytkownikowi 271Testowanie dzia ania makra 272
Rozdzia 17 Praca z formantami formularza UserForm 275Rozpoczynamy prac z formantami formularzy UserForm 275
Dodawanie formantoacutew 276Wprowadzenie do w a ciwo ci formantoacutew 277
Formanty okien dialogowych mdash szczegoacute y 278Formant CheckBox (pole wyboru) 279Formant ComboBox (pole kombi) 280Formant CommandButton (przycisk polecenia) 281Formant Frame (pole grupy) 281Formant Image (pole obrazu) 282
Kup książkę Poleć książkę
12 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Formant Label (pole etykiety) 283Formant ListBox (pole listy) 283Formant MultiPage 284Formant OptionButton (przycisk opcji) 285Formant RefEdit (pole zakresu) 286Formant ScrollBar (pasek przewijania) 286Formant SpinButton (pokr t o) 287Formant TabStrip (pole karty) 288Formant TextBox (pole tekstowe) 288Formant ToggleButton (przycisk prze cznika) 289
Praca z formantami w oknach dialogowych 289Zmiana rozmiaroacutew i przenoszenie formantoacutew w inne miejsce 289Rozmieszczanie i wyroacutewnywanie po o enia formantoacutew w oknie dialogowym 290Obs uga u ytkownikoacutew preferuj cych korzystanie z klawiatury 291Testowanie formularzy UserForm 293
Estetyka okien dialogowych 293
Rozdzia 18 Techniki pracy z formularzami UserForm 295Zastosowanie w asnych okien dialogowych 295Przyk adowy formularz UserForm 296
Tworzenie okna dialogowego 296Tworzenie kodu procedury wy wietlaj cej okno dialogowe 298Udost pnianie makra u ytkownikowi 299Testowanie okna dialogowego 299Dodawanie procedur obs ugi zdarze 300Sprawdzanie poprawno ci danych 302Teraz okno dialogowe dzia a tak jak powinno 302
Wi cej przyk adoacutew formularzy UserForm 302Zastosowanie formantoacutew ListBox 303Zaznaczanie zakresoacutew 307Praca z wieloma grupami formantoacutew OptionButton 309Zastosowanie formantoacutew SpinButton oraz TextBox 310Wykorzystywanie formularza UserForm jako wska nika post pu zadania 312Tworzenie niemodalnych okien dialogowych z wieloma kartami 315Wy wietlanie wykresoacutew na formularzach UserForm 317
Lista kontrolna tworzenia i testowania okien dialogowych 318
Rozdzia 19 Udost pnianie makr z poziomu interfejsu u ytkownika 321Dostosowywanie Wst ki 321
R czne dopasowywanie Wst ki do w asnych potrzeb 322Dodawanie do Wst ki przycisku w asnego makra 324Dostosowywanie Wst ki za pomoc kodu XML 324
Dostosowywanie menu podr cznego 329Rodzaje obiektoacutew CommandBar 329Wy wietlanie wszystkich menu podr cznych 329Odwo ania do elementoacutew kolekcji CommandBars 330Odwo ania do formantoacutew obiektu CommandBar 331W a ciwo ci formantoacutew obiektu CommandBar 332
Kup książkę Poleć książkę
Spis tre ci 13
Przyk ady zastosowania VBA do modyfikacji menu podr cznego 334Resetowanie wszystkich wbudowanych menu podr cznych 334Dodawanie nowego elementu do menu podr cznego Cell 335Wy czanie menu podr cznego 337
Tworzenie w asnych paskoacutew narz dzi 338
Cz V Od teorii do praktyki 341Rozdzia 20 Jak tworzy w asne funkcje arkuszowe i jak prze y aby o tym opowiedzie 343
Dlaczego tworzymy w asne funkcje 343Podstawowe informacje o funkcjach VBA 344Tworzenie funkcji 345Praca z argumentami funkcji 345Przyk ady funkcji 346
Funkcje bezargumentowe 346Funkcje jednoargumentowe 346Funkcje z dwoma argumentami 348Funkcje pobieraj ce zakres jako argument 349Funkcje z argumentami opcjonalnymi 351
Funkcje opakowuj ce 353Funkcja NumberFormat 353Funkcja ExtractElement 354Funkcja SayIt 354Funkcja IsLike 355
Funkcje zwracaj ce tablice 355Zwracanie tablicy zawieraj cej nazwy miesi cy 355Zwracanie posortowanej listy 356
Okno dialogowe Wstawianie funkcji 358Wy wietlanie opisoacutew funkcji 358Opisy argumentoacutew 360
Rozdzia 21 Tworzenie dodatkoacutew 361No dobrzehellip czym zatem s dodatki 361Po co tworzy si dodatki 362Praca z dodatkami 363Podstawy tworzenia dodatkoacutew 364Tworzymy przyk adowy dodatek 365
Konfiguracja skoroszytu 365Testowanie skoroszytu 367Tworzenie opisoacutew dodatku 368Ochrona kodu VBA 369Tworzenie dodatku 369Otwieranie dodatku 369Dystrybucja dodatkoacutew 370Modyfikowanie dodatkoacutew 371
Kup książkę Poleć książkę
14 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Cz VI Dekalogi 373Rozdzia 22 Dziesi pyta na temat VBA (wraz z odpowiedziami) 375
Rozdzia 23 (Prawie) dziesi roacutede informacji na temat Excela 379System pomocy j zyka VBA 379Wsparcie techniczne firmy Microsoft 380Inne strony internetowe 380Blogi po wi cone Excelowi 380Google 381Bing 381Lokalne grupy u ytkownikoacutew 381Moje inne ksi ki 381
Rozdzia 24 Dziesi rzeczy ktoacutere powiniene robi w j zyku VBAi ktoacuterych nie powiniene robi 383
Zawsze deklaruj wszystkie zmienne 383Nigdy nie powiniene myli has a chroni cego kod VBA z bezpiecze stwem aplikacji 384Zawsze staraj si wyczy ci i zoptymalizowa kod aplikacji 384Nigdy nie umieszczaj wszystkiego w jednej procedurze 385Zawsze powiniene rozwa y zastosowanie innego oprogramowania 385Nigdy nie zak adaj e ka dy u ytkownik zezwala na uruchamianie makr 386Zawsze staraj si eksperymentowa z nowymi rozwi zaniami 386Nigdy z goacutery nie zak adaj e Twoacutej kod b dzie poprawnie dzia a z innymi wersjami Excela 386Zawsze pami taj o u ytkownikach Twojej aplikacji 387Nigdy nie zapominaj o tworzeniu kopii zapasowych 387
Skorowidz 389
Kup książkę Poleć książkę
Rozdzia 14
Przyk ady i technikiprogramowania w j zyku VBA
W tym rozdziale poznasz szereg przyk adoacutew technik programowania w j zyku VBA dowiesz si jak mo esz przyspieszy dzia anie kodu VBA w Twojej aplikacji
ierz e nauka programowania jest znacznie szybsza i zdecydowanie bardziejefektywna kiedy pracujemy na konkretnych przyk adach Dobrze opracowany
przyk ad o wiele lepiej obja nia zagadnienie ni najbardziej rozbudowany i szczegoacute owyale teoretyczny opis Poniewa czytasz t ksi k prawdopodobnie zgadzasz si ze mnw tej materii W tym rozdziale znajdziesz szereg przyk adoacutew demonstruj cych u ytecznepraktyczne techniki programowania w j zyku VBA
Przyk ady omawiane w tym rozdziale zosta y podzielone na kilka kategorii Oto one
Praca z zakresami
Modyfikacja ustawie Excela
Praca z wykresami
Przyspieszanie i optymalizacja dzia ania kodu VBA
Niektoacutere z prezentowanych przyk adoacutew b dziesz moacuteg od razu wykorzysta w swoichaplikacjach jednak w wi kszo ci przypadkoacutew b d wymaga y pewnego dostosowaniado Twoich aplikacji
Przetwarzanie zakresoacutew komoacuterekWi kszo zada z jakimi b dziesz si styka programuj c w j zyku VBA b dzie zapewnewymaga a mniejszego b d wi kszego przetwarzania zakresoacutew komoacuterek (aby od wie ysobie wiadomo ci na temat obiektu Range powiniene zajrze do rozdzia u 8) Kiedypracujesz z obiektami Range powiniene pami ta o nast puj cych sprawach
Kod VBA nie musi zaznacza danego zakresu aby go przetwarza
Je eli kod VBA zaznacza wybrany zakres przechowuj cy go skoroszyt musi byaktywny
W
Kup książkę Poleć książkę
218 Cz III Podstawy programowania
Rejestrator makr nie zawsze b dzie w stanie wygenerowa optymalny kod VBABardzo cz sto jednak mo esz za jego pomoc utworzy bazowe makro i potemodpowiednio zmodyfikowa kod tak aby sta si bardziej efektywny
Zazwyczaj bardzo dobrym rozwi zaniem jest nadawanie nazw zakresom komoacuterekwykorzystywanym w kodzie VBA Przyk adowo polecenie Range(Total)jestznacznie lepszym rozwi zaniem ni Range(D45) Je li w tym drugim przypadkupoacute niej wstawisz dodatkowy wiersz powy ej wiersza 45 to eby wszystko dzia a opoprawnie b dziesz musia zmodyfikowa makro tak aby korzysta o z nowegopoprawnego adresu komoacuterki a ta po wykonaniu takiej operacji b dzie mia a innyadres (D46) Aby nada nazw wybranemu zakresowi komoacuterek powiniene przejna kart FORMU Y i wybra polecenie Definiuj nazw znajduj ce si w grupiepolece Nazwy zdefiniowane
Kiedy tworzysz makro ktoacutere b dzie przetwarza o zakres komoacuterek zaznaczonyprzez u ytkownika pami taj e u ytkownik mo e zaznaczy kilka ca ych kolumnczy wierszy W wi kszo ci przypadkoacutew z pewno ci nie b dziesz chcia aby makrow p tli przechodzi o w takiej sytuacji przez wszystkie zaznaczone komoacuterki (w czniez pustymi) co mog oby zaj bardzo wiele czasu Dobre makro powinno odszukai przetwarza tylko komoacuterki ktoacutere nie s puste
Excel pozwala na jednoczesne zaznaczanie wielu zakresoacutew komoacuterek Aby to zrobi powiniene zaznaczy pierwszy zakres komoacuterek potem wcisn i przytrzymaklawisz Ctrl i zaznacza kolejne zakresy komoacuterek przy u yciu myszy Kod Twojejaplikacji powinien by przygotowany na takie sytuacje i podejmowa odpowiednieakcje
Skoroszyty z wybranymi przyk adami omawianymi w tym rozdziale znajdziesz na stronieinternetowej naszej ksi ki
Je eli chcesz samodzielnie wpisywa kod omawianych przyk adoacutew przejd do edytoraVBE naciskaj c kombinacj klawiszy lewyAlt+F11 a nast pnie wstaw nowy modu VBAi wpisz kod prezentowanych procedur Upewnij si e Twoacutej skoroszyt jest poprawnieskonfigurowany Je eli na przyk ad kod danego przyk adu odwo uje si do arkuszyo nazwach Arkusz1 i Arkusz2 upewnij si e takie arkusze istniej w Twoim skoroszycie
Kopiowanie zakresoacutewKopiowanie zakresoacutew komoacuterek mo e mia o pretendowa do miana jednej z najcz ciejwykonywanych operacji w Excelu Kiedy w czysz rejestrator makr i skopiujesz zakreskomoacuterek o adresie A1A5 do zakresu B1B5 otrzymasz nast puj ce makro
Sub CopyRange() Range(A1A5)Select SelectionCopy Range(B1)Select ActiveSheetPaste ApplicationCutCopyMode = FalseEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 219
Zwroacute uwag na ostatnie polecenie Zosta o ono wygenerowane przez naci ni cieklawisza Esc po skopiowaniu zakresu komoacuterek co spowodowa o usuni cie przerywanejlinii reprezentuj cej na arkuszu obramowanie kopiowanego zakresu
Przedstawione makro dzia a poprawnie ale zakresy komoacuterek mo na kopiowa w znaczniebardziej efektywny sposoacuteb Identyczny rezultat mo esz osi gn za pomoc proceduryktoacutera sk ada si z tylko jednego wiersza polecenia i nie zaznacza adnych komoacuterek(dzi ki czemu nie wymaga ustawiania w a ciwo ci CutCopyMode na warto False)
Sub CopyRange2() Range(A1A5)Copy Range(B1)End Sub
Procedura przedstawiona powy ej korzysta z tego e metoda Copy mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe kopiowanego zakresu Informacje o tymznalaz em w pomocy systemowej VBA Powy szy przyk ad doskonale roacutewnie ilustrujefakt e rejestrator makr nie zawsze generuje najbardziej efektywny kod
Kopiowanie zakresu o zmiennej wielko ciW wielu przypadkach konieczne jest skopiowanie zakresu komoacuterek dla ktoacuterego dok adnaliczba wierszy i kolumn okre laj cych jego wielko nie jest z goacutery znana Przyk adowomo esz dysponowa skoroszytem ledz cym tygodniow sprzeda w ktoacuterym liczba wierszyzmienia si ka dego tygodnia po wprowadzeniu nowych danych
Na rysunku 141 przedstawiam przyk ad cz sto spotykanego typu arkusza Znajduj cysi w nim zakres komoacuterek sk ada si z kilku wierszy ktoacuterych liczba zmienia si ka degodnia Poniewa nie wiesz jaki jest rozmiar zakresu w danej chwili musisz utworzykod ktoacutery b dzie dzia a bez u ywania adresu zakresu kopiowanych komoacuterek
Rysunek 141Przyk ad zakre-su ktoacutery mo e
sk ada siz dowolnej
liczby wierszy
Makro przedstawione poni ej ilustruje sposoacuteb kopiowania zakresu komoacuterek z arkuszaArkusz1 do arkusza Arkusz2 (pocz wszy od komoacuterki A1) Makro wykorzystuje w a ciwoCurrentRegion ktoacutera zwraca obiekt Range odpowiadaj cy blokowi komoacuterek otaczaj cychokre lon komoacuterk (w tym przypadku o adresie A1)
Kup książkę Poleć książkę
220 Cz III Podstawy programowania
Sub CopyCurrentRegion() Range(A1)CurrentRegionCopy Sheets(Arkusz2)Select Range(A1)Select ActiveSheetPaste Sheets(Arkusz1)Select ApplicationCutCopyMode = FalseEnd Sub
Zastosowanie w a ciwo ci CurrentRegion jest roacutewnowa ne z przej ciem na kartNARZ DZIA G OacuteWNE i wybraniem polecenia Znajd i zaznaczPrzejd do mdashspecjalnie znajduj cego si w grupie opcji Edytowanie i nast pnie zaznaczeniem opcjiBie cy obszar Aby przekona si jak to dzia a podczas wykonywania tych polecepowiniene u y rejestratora makr Zazwyczaj warto w a ciwo ci CurrentRegionreprezentuje prostok tny blok komoacuterek otoczony przez puste wiersze i kolumny
Oczywi cie mo esz zoptymalizowa kod makra przedstawionego powy ej i niezaznacza obszaru docelowego dla kopiowanych komoacuterek Makro przedstawione poni ejkorzysta z faktu e metoda Copy mo e u ywa argumentu wywo ania reprezentuj cegomiejsce docelowe kopiowanego zakresu
Sub CopyCurrentRegion2() Range(A1)CurrentRegionCopy _ Sheets(Arkusz2)Range(A1)End Sub
Je eli zakres komoacuterek ktoacutery chcesz skopiowa jest tabel (zdefiniowan przy u yciapolecenia WSTAWIANIETabeleTabela) ca e zadanie b dzie jeszcze atwiejsze Ka databela posiada swoj nazw (na przyk ad Tabela1) i automatycznie rozszerza si w miardodawania nowych wierszy
Sub CopyTable() Range(Tabela1)Copy Sheets(Arkusz2)Range(A1)End Sub
Je eli sproacutebujesz wykona procedur przedstawion powy ej przekonasz si e wiersznag oacutewka tabeli nie jest kopiowany poniewa obiekt Tabela1 nie obejmuje tegowiersza Je li chcesz aby wiersz nag oacutewka roacutewnie by kopiowany powiniene zmieniodwo anie do tabeli tak jak to zosta o przedstawione poni ej
Range(Tabela1[All])
Zaznaczanie komoacuterekdo ko ca wiersza lub kolumnyPrawdopodobnie bardzo cz sto u ywasz kombinacji klawiszy takich jak Ctrl+Shift+ czy Ctrl+Shift+ do zaznaczania zakresoacutew sk adaj cych si ze wszystkich komoacuterekod komoacuterki aktywnej a do ko ca kolumny czy wiersza Nie jest wi c chyba zaskoczenieme mo esz napisa makro ktoacutere b dzie zaznacza komoacuterki w podobny sposoacuteb
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 221
Do zaznaczania ca ego bloku komoacuterek mo esz u y w a ciwo ci CurrentRegion Ale copowiniene zrobi je eli chcesz zaznaczy powiedzmy tylko jedn kolumn z tegobloku komoacuterek Na szcz cie VBA pozwala na wykonywanie takich operacji Proceduraktoacuterej kod przedstawiam poni ej zaznacza zakres komoacuterek pocz wszy od bie cejaktywnej komoacuterki w doacute kolumny a do komoacuterki znajduj cej si o jeden wiersz powy ejpierwszej pustej komoacuterki tej kolumny Po zaznaczeniu zakresu mo esz przetwarza gow dowolny sposoacuteb mdash kopiowa komoacuterki przenosi je w inne miejsce arkusza zmieniaformatowanie i tak dalej
Sub SelectDown() Range(ActiveCell ActiveCellEnd(xlDown))SelectEnd Sub
Oczywi cie taki sam obszar mo esz roacutewnie zaznaczy r cznie Aby to zrobi powinienezaznaczy pierwsz komoacuterk nast pnie wcisn i przytrzyma klawisz Shift nacisnklawisz End i wreszcie nacisn klawisz (strza ka w doacute )
W przyk adzie wykorzystuj metod End obiektu ActiveCell ktoacutera zwraca obiekt typuRange Metoda End pobiera jeden argument okre laj cy kierunek w ktoacuterym zostaniewykonane zaznaczenie Argumentami tej metody mo e by dowolna ze sta ychprzedstawionych poni ej
xlUp
xlDown
xlToLeft
xlToRight
Pami taj e zaznaczanie zakresu nie jest potrzebne do jego przetwarzania Makroprzedstawione poni ej zmienia czcionk w komoacuterkach zmiennego zakresu (pojedynczakolumna) na pogrubion bez uprzedniego zaznaczenia zakresu
Sub MakeBold() Range(ActiveCell ActiveCellEnd(xlDown)) _ FontBold = TrueEnd Sub
Zaznaczanie ca ego wiersza lub ca ej kolumnyProcedura przedstawiona poni ej ilustruje sposoacuteb zaznaczania kolumny w ktoacuterej znajdujesi aktywna komoacuterka Makro wykorzystuje w a ciwo EntireColumn ktoacutera zwracaobiekt typu Range reprezentuj cy ca kolumn
Sub SelectColumn() ActiveCellEntireColumnSelectEnd Sub
Jak pewnie si spodziewasz w j zyku VBA dost pna jest roacutewnie w a ciwo EntireRowktoacutera zwraca obiekt typu Range reprezentuj cy ca y wiersz
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
6 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Plusy i minusy j zyka VBA 32Plusy j zyka VBA 32Minusy j zyka VBA 33
VBA w pigu ce 33Wycieczka po wersjach Excela 35
Rozdzia 2 Szybkie zanurzenie 39Przygotowanie do pracy 39Plan dzia ania 40Stawiamy pierwsze kroki 40Rejestrowanie makra 41Testowanie makra 42Podgl d kodu makra 42Modyfikacja makra 44Zapisywanie skoroszytoacutew zawieraj cych makra 45Bezpiecze stwo makr 45Wi cej o makrze NameAndTime 47
Cz II Jak VBA wspoacute pracuje z Excelem 49Rozdzia 3 Praca w edytorze VBE 51
Czym jest Visual Basic Editor 51Uruchamianie edytora VBE 51Zapoznanie z komponentami edytora VBE 52
Praca z oknem Project 54Dodawanie nowego modu u VBA 55Usuwanie modu u VBA 55Eksportowanie i importowanie obiektoacutew 56
Praca z oknem Code 56Minimalizowanie i maksymalizowanie okien 56Tworzenie modu u 57Wprowadzanie kodu VBA do modu u 58Bezpo rednie wprowadzanie kodu 58U ywanie rejestratora makr 61Kopiowanie kodu VBA 63
Dostosowywanie rodowiska VBA 63Karta Editor 64Karta Editor Format 66Karta General 67Karta Docking 68
Rozdzia 4 Wprowadzenie do modelu obiektowego w Excelu 69Czy Excel to obiekt 70Wspinaczka po hierarchii obiektoacutew 70Zapoznanie z kolekcjami 71Odwo ywanie si do obiektoacutew 71
Nawigacja po hierarchii obiektoacutew 72Upraszczanie odwo a do obiektoacutew 73
Kup książkę Poleć książkę
Spis tre ci 7
W a ciwo ci i metody obiektoacutew 74W a ciwo ci obiektoacutew 74Metody obiektoacutew 76Zdarzenia obiektoacutew 77
Poszukiwanie dodatkowych informacji 78System pomocy VBA 78Narz dzie Object Browser 79Automatyczna lista w a ciwo ci i metod 80
Rozdzia 5 Procedury Sub i Function w j zyku VBA 81Procedury Sub a funkcje 81
Rzut oka na procedury Sub 82Rzut oka na procedury Function 82Nazwy procedur Sub i Function 83
Uruchamianie procedur Sub 83Bezpo rednie uruchamianie procedur Sub 85Uruchamianie procedur w oknie dialogowym Makro 85Uruchamianie makr za pomoc skroacutetoacutew klawiszowych 86Uruchamianie procedur przy u yciu przyciskoacutew i kszta toacutew 87Uruchamianie procedur z poziomu innych procedur 89
Uruchamianie procedur Function 89Wywo ywanie funkcji z poziomu procedur Sub 90Wywo ywanie funkcji z poziomu formu arkusza 90
Rozdzia 6 U ywanie rejestratora makr 93Czy to rzeczywisto czy to VBA 93Podstawy rejestrowania makr 93Przygotowania do rejestrowania makr 95Wzgl dne czy bezwzgl dne 96
Rejestrowanie makr w trybie odwo a bezwzgl dnych 96Rejestrowanie makr w trybie odwo a wzgl dnych 97
Co jest rejestrowane 98Opcje rejestratora makr 100
Nazwa makra 100Klawisz skroacutetu 100Przechowuj makro w 101Opis 101
Czy to co jest wydajne 101
Cz III Podstawy programowania 105Rozdzia 7 Kluczowe elementy j zyka VBA 107
Stosowanie komentarzy w kodzie VBA 107U ywanie zmiennych sta ych i typoacutew danych 109
Poj cie zmiennej 109Czym s typy danych w j zyku VBA 110Deklarowanie zmiennych i okre lanie ich zasi gu 111
Kup książkę Poleć książkę
8 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Sta e 117Sta e predefiniowane 118
a cuchy znakoacutew 118Daty i godziny 119
Instrukcje przypisania 120Przyk ady instrukcji przypisania 120O znaku roacutewno ci 121Proste operatory 121
Praca z tablicami 123Deklarowanie tablic 123Tablice wielowymiarowe 124Tablice dynamiczne 124
Stosowanie etykiet 125
Rozdzia 8 Praca z obiektami Range 127Szybka powtoacuterka 127Inne sposoby odwo ywania si do zakresu 129
W a ciwo Cells 129W a ciwo Offset 130
Wybrane w a ciwo ci obiektu Range 131W a ciwo Value 131W a ciwo Text 132W a ciwo Count 133W a ciwo ci Column i Row 133W a ciwo Address 133W a ciwo HasFormula 134W a ciwo Font 134W a ciwo Interior 136W a ciwo ci Formula i FormulaLocal 136W a ciwo NumberFormat 137
Wybrane metody obiektu Range 137Metoda Select 137Metody Copy i Paste 138Metoda Clear 138Metoda Delete 139
Rozdzia 9 Praca z funkcjami VBA i arkusza kalkulacyjnego 141Co to jest funkcja 141Stosowanie wbudowanych funkcji VBA 142
Przyk ady funkcji VBA 142Funkcje VBA ktoacutere robi co wi cej ni tylko zwracanie warto ci 144Odkrywanie funkcji VBA 144
U ycie funkcji arkusza kalkulacyjnego w VBA 145Przyk ady funkcji arkusza kalkulacyjnego 148Wprowadzanie funkcji arkusza kalkulacyjnego 150Wi cej o u yciu funkcji arkusza kalkulacyjnego 151
U ycie w asnych funkcji 151
Kup książkę Poleć książkę
Spis tre ci 9
Rozdzia 10 Sterowanie przep ywem i podejmowanie decyzji 153Zabierz si za przep yw kolego 153Instrukcja GoTo 154Decyzje decyzje 155
Struktura If-Then 155Struktura Select Case 159
Entliczek p tliczek mdash czyli jak u ywa p tli 162P tle For-Next 162P tla Do-While 167P tla Do-Until 168
U ycie p tli For Each-Next z kolekcjami 168
Rozdzia 11 Automatyczne procedury i zdarzenia 171Przygotowanie do wielkiego zdarzenia 171
Czy zdarzenia s przydatne 173Programowanie procedur obs ugi zdarze 173
Gdzie jest umieszczony kod VBA 174Tworzenie procedury obs ugi zdarzenia 175Przyk ady wprowadzaj ce 176
Zdarzenie Open dla skoroszytu 176Zdarzenie BeforeClose dla skoroszytu 179Zdarzenie BeforeSave dla skoroszytu 179
Przyk ady zdarze aktywacyjnych 180Zdarzenia aktywacji i dezaktywacji arkusza 180Zdarzenia aktywacji i dezaktywacji skoroszytu 181Zdarzenia aktywacji skoroszytu 182
Inne zdarzenia dotycz ce arkusza 183Zdarzenie BeforeDoubleClick 183Zdarzenie BeforeRightClick 184Zdarzenie Change 184
Zdarzenia niezwi zane z obiektami 186Zdarzenie OnTime 186Zdarzenia naci ni cia klawisza 188
Rozdzia 12 Techniki obs ugi b doacutew 191Rodzaje b doacutew 191B dny przyk ad 192
To makro nie jest idealne 192Makro wci nie jest idealne 193Czy teraz makro jest idealne 194Rezygnacja z idea u 195
Inny sposoacuteb obs ugi b doacutew 195Korekta procedury EnterSquareRoot 195O instrukcji On Error 196
Obs uga b doacutew mdash szczegoacute owe informacje 197Wznawianie wykonywania kodu po wyst pieniu b du 197Obs uga b doacutew w pigu ce 199
Kup książkę Poleć książkę
10 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kiedy ignorowa b dy 199Rozpoznawanie okre lonych b doacutew 200
Zamierzony b d 201
Rozdzia 13 Dezynsekcja kodu czyli jak walczy z pluskwami 203Rodzaje pluskiew 203Podstawy entomologii czyli jak zidentyfikowa pluskw 205Metody i techniki walki z pluskwami 205
Przegl danie kodu VBA 206Umieszczanie funkcji MsgBox w kluczowych miejscach kodu 206Umieszczanie polecenia DebugPrint w kluczowych miejscach kodu 208Korzystanie z wbudowanych narz dzi Excela wspomagaj cych odpluskwianie kodu VBA 209
Kilka s oacutew o debuggerze 209Ustawianie punktoacutew przerwa w kodzie programu 209Zastosowanie okna Watch 212Zastosowanie okna Locals 213
Jak zredukowa liczb b doacutew w kodzie programu 215
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 217Przetwarzanie zakresoacutew komoacuterek 217
Kopiowanie zakresoacutew 218Kopiowanie zakresu o zmiennej wielko ci 219Zaznaczanie komoacuterek do ko ca wiersza lub kolumny 220Zaznaczanie ca ego wiersza lub ca ej kolumny 221Przenoszenie zakresoacutew 222Wydajne przetwarzanie komoacuterek zaznaczonego zakresu przy u yciu p tli 222Wydajne przetwarzanie komoacuterek zaznaczonego zakresu przy u yciu p tli (cz II) 224Wprowadzanie warto ci do komoacuterki 225Okre lanie typu zaznaczonego zakresu 226Identyfikowanie zaznacze wielokrotnych 226
Zmiana ustawie Excela 227Zmiana ustawie logicznych (opcje typu Boolean) 227Zmiana innych opcji (typu non-Boolean) 228
Praca z wykresami 229Metoda AddChart kontra metoda AddChart2 230Modyfikowanie typu wykresu 231Przechodzenie w p tli przez elementy kolekcji ChartObjects 232Modyfikowanie w a ciwo ci wykresu 232Zmiana formatowania wykresoacutew 233
Jak przyspieszy dzia anie kodu VBA 234Wy czanie aktualizacji ekranu 234Wy czenie automatycznego przeliczania skoroszytu 235Wy czanie irytuj cych ostrze e 236Upraszczanie odwo a do obiektoacutew 236Deklarowanie typoacutew zmiennych 237Zastosowanie struktury With-End With 238
Kup książkę Poleć książkę
Spis tre ci 11
Cz IV Komunikacja z u ytkownikiem 239Rozdzia 15 Proste okna dialogowe 241
Co zamiast formularzy UserForm 241Funkcja MsgBox 242
Wy wietlanie prostych okien dialogowych 243Pobieranie odpowiedzi z okna dialogowego 243Dostosowywanie wygl du okien dialogowych do w asnych potrzeb 244
Funkcja InputBox 247Sk adnia funkcji InputBox 248Przyk ad zastosowania funkcji InputBox 248Inny rodzaj okna dialogowego InputBox 249
Metoda GetOpenFilename 250Sk adnia metody GetOpenFilename 251Przyk ad zastosowania metody GetOpenFilename 251
Metoda GetSaveAsFilename 253Pobieranie nazwy folderu 254Wy wietlanie wbudowanych okien dialogowych programu Excel 254
Rozdzia 16 Wprowadzenie do formularzy UserForm 257Kiedy u ywa formularzy UserForm 257Tworzenie formularzy UserForm mdash wprowadzenie 258Praca z formularzami UserForm 259
Wstawianie nowego formularza UserForm 259Umieszczanie formantoacutew na formularzu UserForm 260Modyfikacja w a ciwo ci formantoacutew formularza UserForm 261Przegl danie okna Code formularza UserForm 263Wy wietlanie formularzy UserForm 263Pobieranie i wykorzystywanie informacji z formularzy UserForm 264
Przyk ad tworzenia formularza UserForm 264Tworzenie formularza UserForm 265Dodawanie przyciskoacutew polece (formanty CommandButton) 265Dodawanie przyciskoacutew opcji (formanty OptionButton) 267Dodawanie procedur obs ugi zdarze 268Tworzenie makra ktoacutere wy wietla formularz na ekranie 270Udost pnianie makra u ytkownikowi 271Testowanie dzia ania makra 272
Rozdzia 17 Praca z formantami formularza UserForm 275Rozpoczynamy prac z formantami formularzy UserForm 275
Dodawanie formantoacutew 276Wprowadzenie do w a ciwo ci formantoacutew 277
Formanty okien dialogowych mdash szczegoacute y 278Formant CheckBox (pole wyboru) 279Formant ComboBox (pole kombi) 280Formant CommandButton (przycisk polecenia) 281Formant Frame (pole grupy) 281Formant Image (pole obrazu) 282
Kup książkę Poleć książkę
12 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Formant Label (pole etykiety) 283Formant ListBox (pole listy) 283Formant MultiPage 284Formant OptionButton (przycisk opcji) 285Formant RefEdit (pole zakresu) 286Formant ScrollBar (pasek przewijania) 286Formant SpinButton (pokr t o) 287Formant TabStrip (pole karty) 288Formant TextBox (pole tekstowe) 288Formant ToggleButton (przycisk prze cznika) 289
Praca z formantami w oknach dialogowych 289Zmiana rozmiaroacutew i przenoszenie formantoacutew w inne miejsce 289Rozmieszczanie i wyroacutewnywanie po o enia formantoacutew w oknie dialogowym 290Obs uga u ytkownikoacutew preferuj cych korzystanie z klawiatury 291Testowanie formularzy UserForm 293
Estetyka okien dialogowych 293
Rozdzia 18 Techniki pracy z formularzami UserForm 295Zastosowanie w asnych okien dialogowych 295Przyk adowy formularz UserForm 296
Tworzenie okna dialogowego 296Tworzenie kodu procedury wy wietlaj cej okno dialogowe 298Udost pnianie makra u ytkownikowi 299Testowanie okna dialogowego 299Dodawanie procedur obs ugi zdarze 300Sprawdzanie poprawno ci danych 302Teraz okno dialogowe dzia a tak jak powinno 302
Wi cej przyk adoacutew formularzy UserForm 302Zastosowanie formantoacutew ListBox 303Zaznaczanie zakresoacutew 307Praca z wieloma grupami formantoacutew OptionButton 309Zastosowanie formantoacutew SpinButton oraz TextBox 310Wykorzystywanie formularza UserForm jako wska nika post pu zadania 312Tworzenie niemodalnych okien dialogowych z wieloma kartami 315Wy wietlanie wykresoacutew na formularzach UserForm 317
Lista kontrolna tworzenia i testowania okien dialogowych 318
Rozdzia 19 Udost pnianie makr z poziomu interfejsu u ytkownika 321Dostosowywanie Wst ki 321
R czne dopasowywanie Wst ki do w asnych potrzeb 322Dodawanie do Wst ki przycisku w asnego makra 324Dostosowywanie Wst ki za pomoc kodu XML 324
Dostosowywanie menu podr cznego 329Rodzaje obiektoacutew CommandBar 329Wy wietlanie wszystkich menu podr cznych 329Odwo ania do elementoacutew kolekcji CommandBars 330Odwo ania do formantoacutew obiektu CommandBar 331W a ciwo ci formantoacutew obiektu CommandBar 332
Kup książkę Poleć książkę
Spis tre ci 13
Przyk ady zastosowania VBA do modyfikacji menu podr cznego 334Resetowanie wszystkich wbudowanych menu podr cznych 334Dodawanie nowego elementu do menu podr cznego Cell 335Wy czanie menu podr cznego 337
Tworzenie w asnych paskoacutew narz dzi 338
Cz V Od teorii do praktyki 341Rozdzia 20 Jak tworzy w asne funkcje arkuszowe i jak prze y aby o tym opowiedzie 343
Dlaczego tworzymy w asne funkcje 343Podstawowe informacje o funkcjach VBA 344Tworzenie funkcji 345Praca z argumentami funkcji 345Przyk ady funkcji 346
Funkcje bezargumentowe 346Funkcje jednoargumentowe 346Funkcje z dwoma argumentami 348Funkcje pobieraj ce zakres jako argument 349Funkcje z argumentami opcjonalnymi 351
Funkcje opakowuj ce 353Funkcja NumberFormat 353Funkcja ExtractElement 354Funkcja SayIt 354Funkcja IsLike 355
Funkcje zwracaj ce tablice 355Zwracanie tablicy zawieraj cej nazwy miesi cy 355Zwracanie posortowanej listy 356
Okno dialogowe Wstawianie funkcji 358Wy wietlanie opisoacutew funkcji 358Opisy argumentoacutew 360
Rozdzia 21 Tworzenie dodatkoacutew 361No dobrzehellip czym zatem s dodatki 361Po co tworzy si dodatki 362Praca z dodatkami 363Podstawy tworzenia dodatkoacutew 364Tworzymy przyk adowy dodatek 365
Konfiguracja skoroszytu 365Testowanie skoroszytu 367Tworzenie opisoacutew dodatku 368Ochrona kodu VBA 369Tworzenie dodatku 369Otwieranie dodatku 369Dystrybucja dodatkoacutew 370Modyfikowanie dodatkoacutew 371
Kup książkę Poleć książkę
14 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Cz VI Dekalogi 373Rozdzia 22 Dziesi pyta na temat VBA (wraz z odpowiedziami) 375
Rozdzia 23 (Prawie) dziesi roacutede informacji na temat Excela 379System pomocy j zyka VBA 379Wsparcie techniczne firmy Microsoft 380Inne strony internetowe 380Blogi po wi cone Excelowi 380Google 381Bing 381Lokalne grupy u ytkownikoacutew 381Moje inne ksi ki 381
Rozdzia 24 Dziesi rzeczy ktoacutere powiniene robi w j zyku VBAi ktoacuterych nie powiniene robi 383
Zawsze deklaruj wszystkie zmienne 383Nigdy nie powiniene myli has a chroni cego kod VBA z bezpiecze stwem aplikacji 384Zawsze staraj si wyczy ci i zoptymalizowa kod aplikacji 384Nigdy nie umieszczaj wszystkiego w jednej procedurze 385Zawsze powiniene rozwa y zastosowanie innego oprogramowania 385Nigdy nie zak adaj e ka dy u ytkownik zezwala na uruchamianie makr 386Zawsze staraj si eksperymentowa z nowymi rozwi zaniami 386Nigdy z goacutery nie zak adaj e Twoacutej kod b dzie poprawnie dzia a z innymi wersjami Excela 386Zawsze pami taj o u ytkownikach Twojej aplikacji 387Nigdy nie zapominaj o tworzeniu kopii zapasowych 387
Skorowidz 389
Kup książkę Poleć książkę
Rozdzia 14
Przyk ady i technikiprogramowania w j zyku VBA
W tym rozdziale poznasz szereg przyk adoacutew technik programowania w j zyku VBA dowiesz si jak mo esz przyspieszy dzia anie kodu VBA w Twojej aplikacji
ierz e nauka programowania jest znacznie szybsza i zdecydowanie bardziejefektywna kiedy pracujemy na konkretnych przyk adach Dobrze opracowany
przyk ad o wiele lepiej obja nia zagadnienie ni najbardziej rozbudowany i szczegoacute owyale teoretyczny opis Poniewa czytasz t ksi k prawdopodobnie zgadzasz si ze mnw tej materii W tym rozdziale znajdziesz szereg przyk adoacutew demonstruj cych u ytecznepraktyczne techniki programowania w j zyku VBA
Przyk ady omawiane w tym rozdziale zosta y podzielone na kilka kategorii Oto one
Praca z zakresami
Modyfikacja ustawie Excela
Praca z wykresami
Przyspieszanie i optymalizacja dzia ania kodu VBA
Niektoacutere z prezentowanych przyk adoacutew b dziesz moacuteg od razu wykorzysta w swoichaplikacjach jednak w wi kszo ci przypadkoacutew b d wymaga y pewnego dostosowaniado Twoich aplikacji
Przetwarzanie zakresoacutew komoacuterekWi kszo zada z jakimi b dziesz si styka programuj c w j zyku VBA b dzie zapewnewymaga a mniejszego b d wi kszego przetwarzania zakresoacutew komoacuterek (aby od wie ysobie wiadomo ci na temat obiektu Range powiniene zajrze do rozdzia u 8) Kiedypracujesz z obiektami Range powiniene pami ta o nast puj cych sprawach
Kod VBA nie musi zaznacza danego zakresu aby go przetwarza
Je eli kod VBA zaznacza wybrany zakres przechowuj cy go skoroszyt musi byaktywny
W
Kup książkę Poleć książkę
218 Cz III Podstawy programowania
Rejestrator makr nie zawsze b dzie w stanie wygenerowa optymalny kod VBABardzo cz sto jednak mo esz za jego pomoc utworzy bazowe makro i potemodpowiednio zmodyfikowa kod tak aby sta si bardziej efektywny
Zazwyczaj bardzo dobrym rozwi zaniem jest nadawanie nazw zakresom komoacuterekwykorzystywanym w kodzie VBA Przyk adowo polecenie Range(Total)jestznacznie lepszym rozwi zaniem ni Range(D45) Je li w tym drugim przypadkupoacute niej wstawisz dodatkowy wiersz powy ej wiersza 45 to eby wszystko dzia a opoprawnie b dziesz musia zmodyfikowa makro tak aby korzysta o z nowegopoprawnego adresu komoacuterki a ta po wykonaniu takiej operacji b dzie mia a innyadres (D46) Aby nada nazw wybranemu zakresowi komoacuterek powiniene przejna kart FORMU Y i wybra polecenie Definiuj nazw znajduj ce si w grupiepolece Nazwy zdefiniowane
Kiedy tworzysz makro ktoacutere b dzie przetwarza o zakres komoacuterek zaznaczonyprzez u ytkownika pami taj e u ytkownik mo e zaznaczy kilka ca ych kolumnczy wierszy W wi kszo ci przypadkoacutew z pewno ci nie b dziesz chcia aby makrow p tli przechodzi o w takiej sytuacji przez wszystkie zaznaczone komoacuterki (w czniez pustymi) co mog oby zaj bardzo wiele czasu Dobre makro powinno odszukai przetwarza tylko komoacuterki ktoacutere nie s puste
Excel pozwala na jednoczesne zaznaczanie wielu zakresoacutew komoacuterek Aby to zrobi powiniene zaznaczy pierwszy zakres komoacuterek potem wcisn i przytrzymaklawisz Ctrl i zaznacza kolejne zakresy komoacuterek przy u yciu myszy Kod Twojejaplikacji powinien by przygotowany na takie sytuacje i podejmowa odpowiednieakcje
Skoroszyty z wybranymi przyk adami omawianymi w tym rozdziale znajdziesz na stronieinternetowej naszej ksi ki
Je eli chcesz samodzielnie wpisywa kod omawianych przyk adoacutew przejd do edytoraVBE naciskaj c kombinacj klawiszy lewyAlt+F11 a nast pnie wstaw nowy modu VBAi wpisz kod prezentowanych procedur Upewnij si e Twoacutej skoroszyt jest poprawnieskonfigurowany Je eli na przyk ad kod danego przyk adu odwo uje si do arkuszyo nazwach Arkusz1 i Arkusz2 upewnij si e takie arkusze istniej w Twoim skoroszycie
Kopiowanie zakresoacutewKopiowanie zakresoacutew komoacuterek mo e mia o pretendowa do miana jednej z najcz ciejwykonywanych operacji w Excelu Kiedy w czysz rejestrator makr i skopiujesz zakreskomoacuterek o adresie A1A5 do zakresu B1B5 otrzymasz nast puj ce makro
Sub CopyRange() Range(A1A5)Select SelectionCopy Range(B1)Select ActiveSheetPaste ApplicationCutCopyMode = FalseEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 219
Zwroacute uwag na ostatnie polecenie Zosta o ono wygenerowane przez naci ni cieklawisza Esc po skopiowaniu zakresu komoacuterek co spowodowa o usuni cie przerywanejlinii reprezentuj cej na arkuszu obramowanie kopiowanego zakresu
Przedstawione makro dzia a poprawnie ale zakresy komoacuterek mo na kopiowa w znaczniebardziej efektywny sposoacuteb Identyczny rezultat mo esz osi gn za pomoc proceduryktoacutera sk ada si z tylko jednego wiersza polecenia i nie zaznacza adnych komoacuterek(dzi ki czemu nie wymaga ustawiania w a ciwo ci CutCopyMode na warto False)
Sub CopyRange2() Range(A1A5)Copy Range(B1)End Sub
Procedura przedstawiona powy ej korzysta z tego e metoda Copy mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe kopiowanego zakresu Informacje o tymznalaz em w pomocy systemowej VBA Powy szy przyk ad doskonale roacutewnie ilustrujefakt e rejestrator makr nie zawsze generuje najbardziej efektywny kod
Kopiowanie zakresu o zmiennej wielko ciW wielu przypadkach konieczne jest skopiowanie zakresu komoacuterek dla ktoacuterego dok adnaliczba wierszy i kolumn okre laj cych jego wielko nie jest z goacutery znana Przyk adowomo esz dysponowa skoroszytem ledz cym tygodniow sprzeda w ktoacuterym liczba wierszyzmienia si ka dego tygodnia po wprowadzeniu nowych danych
Na rysunku 141 przedstawiam przyk ad cz sto spotykanego typu arkusza Znajduj cysi w nim zakres komoacuterek sk ada si z kilku wierszy ktoacuterych liczba zmienia si ka degodnia Poniewa nie wiesz jaki jest rozmiar zakresu w danej chwili musisz utworzykod ktoacutery b dzie dzia a bez u ywania adresu zakresu kopiowanych komoacuterek
Rysunek 141Przyk ad zakre-su ktoacutery mo e
sk ada siz dowolnej
liczby wierszy
Makro przedstawione poni ej ilustruje sposoacuteb kopiowania zakresu komoacuterek z arkuszaArkusz1 do arkusza Arkusz2 (pocz wszy od komoacuterki A1) Makro wykorzystuje w a ciwoCurrentRegion ktoacutera zwraca obiekt Range odpowiadaj cy blokowi komoacuterek otaczaj cychokre lon komoacuterk (w tym przypadku o adresie A1)
Kup książkę Poleć książkę
220 Cz III Podstawy programowania
Sub CopyCurrentRegion() Range(A1)CurrentRegionCopy Sheets(Arkusz2)Select Range(A1)Select ActiveSheetPaste Sheets(Arkusz1)Select ApplicationCutCopyMode = FalseEnd Sub
Zastosowanie w a ciwo ci CurrentRegion jest roacutewnowa ne z przej ciem na kartNARZ DZIA G OacuteWNE i wybraniem polecenia Znajd i zaznaczPrzejd do mdashspecjalnie znajduj cego si w grupie opcji Edytowanie i nast pnie zaznaczeniem opcjiBie cy obszar Aby przekona si jak to dzia a podczas wykonywania tych polecepowiniene u y rejestratora makr Zazwyczaj warto w a ciwo ci CurrentRegionreprezentuje prostok tny blok komoacuterek otoczony przez puste wiersze i kolumny
Oczywi cie mo esz zoptymalizowa kod makra przedstawionego powy ej i niezaznacza obszaru docelowego dla kopiowanych komoacuterek Makro przedstawione poni ejkorzysta z faktu e metoda Copy mo e u ywa argumentu wywo ania reprezentuj cegomiejsce docelowe kopiowanego zakresu
Sub CopyCurrentRegion2() Range(A1)CurrentRegionCopy _ Sheets(Arkusz2)Range(A1)End Sub
Je eli zakres komoacuterek ktoacutery chcesz skopiowa jest tabel (zdefiniowan przy u yciapolecenia WSTAWIANIETabeleTabela) ca e zadanie b dzie jeszcze atwiejsze Ka databela posiada swoj nazw (na przyk ad Tabela1) i automatycznie rozszerza si w miardodawania nowych wierszy
Sub CopyTable() Range(Tabela1)Copy Sheets(Arkusz2)Range(A1)End Sub
Je eli sproacutebujesz wykona procedur przedstawion powy ej przekonasz si e wiersznag oacutewka tabeli nie jest kopiowany poniewa obiekt Tabela1 nie obejmuje tegowiersza Je li chcesz aby wiersz nag oacutewka roacutewnie by kopiowany powiniene zmieniodwo anie do tabeli tak jak to zosta o przedstawione poni ej
Range(Tabela1[All])
Zaznaczanie komoacuterekdo ko ca wiersza lub kolumnyPrawdopodobnie bardzo cz sto u ywasz kombinacji klawiszy takich jak Ctrl+Shift+ czy Ctrl+Shift+ do zaznaczania zakresoacutew sk adaj cych si ze wszystkich komoacuterekod komoacuterki aktywnej a do ko ca kolumny czy wiersza Nie jest wi c chyba zaskoczenieme mo esz napisa makro ktoacutere b dzie zaznacza komoacuterki w podobny sposoacuteb
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 221
Do zaznaczania ca ego bloku komoacuterek mo esz u y w a ciwo ci CurrentRegion Ale copowiniene zrobi je eli chcesz zaznaczy powiedzmy tylko jedn kolumn z tegobloku komoacuterek Na szcz cie VBA pozwala na wykonywanie takich operacji Proceduraktoacuterej kod przedstawiam poni ej zaznacza zakres komoacuterek pocz wszy od bie cejaktywnej komoacuterki w doacute kolumny a do komoacuterki znajduj cej si o jeden wiersz powy ejpierwszej pustej komoacuterki tej kolumny Po zaznaczeniu zakresu mo esz przetwarza gow dowolny sposoacuteb mdash kopiowa komoacuterki przenosi je w inne miejsce arkusza zmieniaformatowanie i tak dalej
Sub SelectDown() Range(ActiveCell ActiveCellEnd(xlDown))SelectEnd Sub
Oczywi cie taki sam obszar mo esz roacutewnie zaznaczy r cznie Aby to zrobi powinienezaznaczy pierwsz komoacuterk nast pnie wcisn i przytrzyma klawisz Shift nacisnklawisz End i wreszcie nacisn klawisz (strza ka w doacute )
W przyk adzie wykorzystuj metod End obiektu ActiveCell ktoacutera zwraca obiekt typuRange Metoda End pobiera jeden argument okre laj cy kierunek w ktoacuterym zostaniewykonane zaznaczenie Argumentami tej metody mo e by dowolna ze sta ychprzedstawionych poni ej
xlUp
xlDown
xlToLeft
xlToRight
Pami taj e zaznaczanie zakresu nie jest potrzebne do jego przetwarzania Makroprzedstawione poni ej zmienia czcionk w komoacuterkach zmiennego zakresu (pojedynczakolumna) na pogrubion bez uprzedniego zaznaczenia zakresu
Sub MakeBold() Range(ActiveCell ActiveCellEnd(xlDown)) _ FontBold = TrueEnd Sub
Zaznaczanie ca ego wiersza lub ca ej kolumnyProcedura przedstawiona poni ej ilustruje sposoacuteb zaznaczania kolumny w ktoacuterej znajdujesi aktywna komoacuterka Makro wykorzystuje w a ciwo EntireColumn ktoacutera zwracaobiekt typu Range reprezentuj cy ca kolumn
Sub SelectColumn() ActiveCellEntireColumnSelectEnd Sub
Jak pewnie si spodziewasz w j zyku VBA dost pna jest roacutewnie w a ciwo EntireRowktoacutera zwraca obiekt typu Range reprezentuj cy ca y wiersz
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Spis tre ci 7
W a ciwo ci i metody obiektoacutew 74W a ciwo ci obiektoacutew 74Metody obiektoacutew 76Zdarzenia obiektoacutew 77
Poszukiwanie dodatkowych informacji 78System pomocy VBA 78Narz dzie Object Browser 79Automatyczna lista w a ciwo ci i metod 80
Rozdzia 5 Procedury Sub i Function w j zyku VBA 81Procedury Sub a funkcje 81
Rzut oka na procedury Sub 82Rzut oka na procedury Function 82Nazwy procedur Sub i Function 83
Uruchamianie procedur Sub 83Bezpo rednie uruchamianie procedur Sub 85Uruchamianie procedur w oknie dialogowym Makro 85Uruchamianie makr za pomoc skroacutetoacutew klawiszowych 86Uruchamianie procedur przy u yciu przyciskoacutew i kszta toacutew 87Uruchamianie procedur z poziomu innych procedur 89
Uruchamianie procedur Function 89Wywo ywanie funkcji z poziomu procedur Sub 90Wywo ywanie funkcji z poziomu formu arkusza 90
Rozdzia 6 U ywanie rejestratora makr 93Czy to rzeczywisto czy to VBA 93Podstawy rejestrowania makr 93Przygotowania do rejestrowania makr 95Wzgl dne czy bezwzgl dne 96
Rejestrowanie makr w trybie odwo a bezwzgl dnych 96Rejestrowanie makr w trybie odwo a wzgl dnych 97
Co jest rejestrowane 98Opcje rejestratora makr 100
Nazwa makra 100Klawisz skroacutetu 100Przechowuj makro w 101Opis 101
Czy to co jest wydajne 101
Cz III Podstawy programowania 105Rozdzia 7 Kluczowe elementy j zyka VBA 107
Stosowanie komentarzy w kodzie VBA 107U ywanie zmiennych sta ych i typoacutew danych 109
Poj cie zmiennej 109Czym s typy danych w j zyku VBA 110Deklarowanie zmiennych i okre lanie ich zasi gu 111
Kup książkę Poleć książkę
8 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Sta e 117Sta e predefiniowane 118
a cuchy znakoacutew 118Daty i godziny 119
Instrukcje przypisania 120Przyk ady instrukcji przypisania 120O znaku roacutewno ci 121Proste operatory 121
Praca z tablicami 123Deklarowanie tablic 123Tablice wielowymiarowe 124Tablice dynamiczne 124
Stosowanie etykiet 125
Rozdzia 8 Praca z obiektami Range 127Szybka powtoacuterka 127Inne sposoby odwo ywania si do zakresu 129
W a ciwo Cells 129W a ciwo Offset 130
Wybrane w a ciwo ci obiektu Range 131W a ciwo Value 131W a ciwo Text 132W a ciwo Count 133W a ciwo ci Column i Row 133W a ciwo Address 133W a ciwo HasFormula 134W a ciwo Font 134W a ciwo Interior 136W a ciwo ci Formula i FormulaLocal 136W a ciwo NumberFormat 137
Wybrane metody obiektu Range 137Metoda Select 137Metody Copy i Paste 138Metoda Clear 138Metoda Delete 139
Rozdzia 9 Praca z funkcjami VBA i arkusza kalkulacyjnego 141Co to jest funkcja 141Stosowanie wbudowanych funkcji VBA 142
Przyk ady funkcji VBA 142Funkcje VBA ktoacutere robi co wi cej ni tylko zwracanie warto ci 144Odkrywanie funkcji VBA 144
U ycie funkcji arkusza kalkulacyjnego w VBA 145Przyk ady funkcji arkusza kalkulacyjnego 148Wprowadzanie funkcji arkusza kalkulacyjnego 150Wi cej o u yciu funkcji arkusza kalkulacyjnego 151
U ycie w asnych funkcji 151
Kup książkę Poleć książkę
Spis tre ci 9
Rozdzia 10 Sterowanie przep ywem i podejmowanie decyzji 153Zabierz si za przep yw kolego 153Instrukcja GoTo 154Decyzje decyzje 155
Struktura If-Then 155Struktura Select Case 159
Entliczek p tliczek mdash czyli jak u ywa p tli 162P tle For-Next 162P tla Do-While 167P tla Do-Until 168
U ycie p tli For Each-Next z kolekcjami 168
Rozdzia 11 Automatyczne procedury i zdarzenia 171Przygotowanie do wielkiego zdarzenia 171
Czy zdarzenia s przydatne 173Programowanie procedur obs ugi zdarze 173
Gdzie jest umieszczony kod VBA 174Tworzenie procedury obs ugi zdarzenia 175Przyk ady wprowadzaj ce 176
Zdarzenie Open dla skoroszytu 176Zdarzenie BeforeClose dla skoroszytu 179Zdarzenie BeforeSave dla skoroszytu 179
Przyk ady zdarze aktywacyjnych 180Zdarzenia aktywacji i dezaktywacji arkusza 180Zdarzenia aktywacji i dezaktywacji skoroszytu 181Zdarzenia aktywacji skoroszytu 182
Inne zdarzenia dotycz ce arkusza 183Zdarzenie BeforeDoubleClick 183Zdarzenie BeforeRightClick 184Zdarzenie Change 184
Zdarzenia niezwi zane z obiektami 186Zdarzenie OnTime 186Zdarzenia naci ni cia klawisza 188
Rozdzia 12 Techniki obs ugi b doacutew 191Rodzaje b doacutew 191B dny przyk ad 192
To makro nie jest idealne 192Makro wci nie jest idealne 193Czy teraz makro jest idealne 194Rezygnacja z idea u 195
Inny sposoacuteb obs ugi b doacutew 195Korekta procedury EnterSquareRoot 195O instrukcji On Error 196
Obs uga b doacutew mdash szczegoacute owe informacje 197Wznawianie wykonywania kodu po wyst pieniu b du 197Obs uga b doacutew w pigu ce 199
Kup książkę Poleć książkę
10 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kiedy ignorowa b dy 199Rozpoznawanie okre lonych b doacutew 200
Zamierzony b d 201
Rozdzia 13 Dezynsekcja kodu czyli jak walczy z pluskwami 203Rodzaje pluskiew 203Podstawy entomologii czyli jak zidentyfikowa pluskw 205Metody i techniki walki z pluskwami 205
Przegl danie kodu VBA 206Umieszczanie funkcji MsgBox w kluczowych miejscach kodu 206Umieszczanie polecenia DebugPrint w kluczowych miejscach kodu 208Korzystanie z wbudowanych narz dzi Excela wspomagaj cych odpluskwianie kodu VBA 209
Kilka s oacutew o debuggerze 209Ustawianie punktoacutew przerwa w kodzie programu 209Zastosowanie okna Watch 212Zastosowanie okna Locals 213
Jak zredukowa liczb b doacutew w kodzie programu 215
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 217Przetwarzanie zakresoacutew komoacuterek 217
Kopiowanie zakresoacutew 218Kopiowanie zakresu o zmiennej wielko ci 219Zaznaczanie komoacuterek do ko ca wiersza lub kolumny 220Zaznaczanie ca ego wiersza lub ca ej kolumny 221Przenoszenie zakresoacutew 222Wydajne przetwarzanie komoacuterek zaznaczonego zakresu przy u yciu p tli 222Wydajne przetwarzanie komoacuterek zaznaczonego zakresu przy u yciu p tli (cz II) 224Wprowadzanie warto ci do komoacuterki 225Okre lanie typu zaznaczonego zakresu 226Identyfikowanie zaznacze wielokrotnych 226
Zmiana ustawie Excela 227Zmiana ustawie logicznych (opcje typu Boolean) 227Zmiana innych opcji (typu non-Boolean) 228
Praca z wykresami 229Metoda AddChart kontra metoda AddChart2 230Modyfikowanie typu wykresu 231Przechodzenie w p tli przez elementy kolekcji ChartObjects 232Modyfikowanie w a ciwo ci wykresu 232Zmiana formatowania wykresoacutew 233
Jak przyspieszy dzia anie kodu VBA 234Wy czanie aktualizacji ekranu 234Wy czenie automatycznego przeliczania skoroszytu 235Wy czanie irytuj cych ostrze e 236Upraszczanie odwo a do obiektoacutew 236Deklarowanie typoacutew zmiennych 237Zastosowanie struktury With-End With 238
Kup książkę Poleć książkę
Spis tre ci 11
Cz IV Komunikacja z u ytkownikiem 239Rozdzia 15 Proste okna dialogowe 241
Co zamiast formularzy UserForm 241Funkcja MsgBox 242
Wy wietlanie prostych okien dialogowych 243Pobieranie odpowiedzi z okna dialogowego 243Dostosowywanie wygl du okien dialogowych do w asnych potrzeb 244
Funkcja InputBox 247Sk adnia funkcji InputBox 248Przyk ad zastosowania funkcji InputBox 248Inny rodzaj okna dialogowego InputBox 249
Metoda GetOpenFilename 250Sk adnia metody GetOpenFilename 251Przyk ad zastosowania metody GetOpenFilename 251
Metoda GetSaveAsFilename 253Pobieranie nazwy folderu 254Wy wietlanie wbudowanych okien dialogowych programu Excel 254
Rozdzia 16 Wprowadzenie do formularzy UserForm 257Kiedy u ywa formularzy UserForm 257Tworzenie formularzy UserForm mdash wprowadzenie 258Praca z formularzami UserForm 259
Wstawianie nowego formularza UserForm 259Umieszczanie formantoacutew na formularzu UserForm 260Modyfikacja w a ciwo ci formantoacutew formularza UserForm 261Przegl danie okna Code formularza UserForm 263Wy wietlanie formularzy UserForm 263Pobieranie i wykorzystywanie informacji z formularzy UserForm 264
Przyk ad tworzenia formularza UserForm 264Tworzenie formularza UserForm 265Dodawanie przyciskoacutew polece (formanty CommandButton) 265Dodawanie przyciskoacutew opcji (formanty OptionButton) 267Dodawanie procedur obs ugi zdarze 268Tworzenie makra ktoacutere wy wietla formularz na ekranie 270Udost pnianie makra u ytkownikowi 271Testowanie dzia ania makra 272
Rozdzia 17 Praca z formantami formularza UserForm 275Rozpoczynamy prac z formantami formularzy UserForm 275
Dodawanie formantoacutew 276Wprowadzenie do w a ciwo ci formantoacutew 277
Formanty okien dialogowych mdash szczegoacute y 278Formant CheckBox (pole wyboru) 279Formant ComboBox (pole kombi) 280Formant CommandButton (przycisk polecenia) 281Formant Frame (pole grupy) 281Formant Image (pole obrazu) 282
Kup książkę Poleć książkę
12 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Formant Label (pole etykiety) 283Formant ListBox (pole listy) 283Formant MultiPage 284Formant OptionButton (przycisk opcji) 285Formant RefEdit (pole zakresu) 286Formant ScrollBar (pasek przewijania) 286Formant SpinButton (pokr t o) 287Formant TabStrip (pole karty) 288Formant TextBox (pole tekstowe) 288Formant ToggleButton (przycisk prze cznika) 289
Praca z formantami w oknach dialogowych 289Zmiana rozmiaroacutew i przenoszenie formantoacutew w inne miejsce 289Rozmieszczanie i wyroacutewnywanie po o enia formantoacutew w oknie dialogowym 290Obs uga u ytkownikoacutew preferuj cych korzystanie z klawiatury 291Testowanie formularzy UserForm 293
Estetyka okien dialogowych 293
Rozdzia 18 Techniki pracy z formularzami UserForm 295Zastosowanie w asnych okien dialogowych 295Przyk adowy formularz UserForm 296
Tworzenie okna dialogowego 296Tworzenie kodu procedury wy wietlaj cej okno dialogowe 298Udost pnianie makra u ytkownikowi 299Testowanie okna dialogowego 299Dodawanie procedur obs ugi zdarze 300Sprawdzanie poprawno ci danych 302Teraz okno dialogowe dzia a tak jak powinno 302
Wi cej przyk adoacutew formularzy UserForm 302Zastosowanie formantoacutew ListBox 303Zaznaczanie zakresoacutew 307Praca z wieloma grupami formantoacutew OptionButton 309Zastosowanie formantoacutew SpinButton oraz TextBox 310Wykorzystywanie formularza UserForm jako wska nika post pu zadania 312Tworzenie niemodalnych okien dialogowych z wieloma kartami 315Wy wietlanie wykresoacutew na formularzach UserForm 317
Lista kontrolna tworzenia i testowania okien dialogowych 318
Rozdzia 19 Udost pnianie makr z poziomu interfejsu u ytkownika 321Dostosowywanie Wst ki 321
R czne dopasowywanie Wst ki do w asnych potrzeb 322Dodawanie do Wst ki przycisku w asnego makra 324Dostosowywanie Wst ki za pomoc kodu XML 324
Dostosowywanie menu podr cznego 329Rodzaje obiektoacutew CommandBar 329Wy wietlanie wszystkich menu podr cznych 329Odwo ania do elementoacutew kolekcji CommandBars 330Odwo ania do formantoacutew obiektu CommandBar 331W a ciwo ci formantoacutew obiektu CommandBar 332
Kup książkę Poleć książkę
Spis tre ci 13
Przyk ady zastosowania VBA do modyfikacji menu podr cznego 334Resetowanie wszystkich wbudowanych menu podr cznych 334Dodawanie nowego elementu do menu podr cznego Cell 335Wy czanie menu podr cznego 337
Tworzenie w asnych paskoacutew narz dzi 338
Cz V Od teorii do praktyki 341Rozdzia 20 Jak tworzy w asne funkcje arkuszowe i jak prze y aby o tym opowiedzie 343
Dlaczego tworzymy w asne funkcje 343Podstawowe informacje o funkcjach VBA 344Tworzenie funkcji 345Praca z argumentami funkcji 345Przyk ady funkcji 346
Funkcje bezargumentowe 346Funkcje jednoargumentowe 346Funkcje z dwoma argumentami 348Funkcje pobieraj ce zakres jako argument 349Funkcje z argumentami opcjonalnymi 351
Funkcje opakowuj ce 353Funkcja NumberFormat 353Funkcja ExtractElement 354Funkcja SayIt 354Funkcja IsLike 355
Funkcje zwracaj ce tablice 355Zwracanie tablicy zawieraj cej nazwy miesi cy 355Zwracanie posortowanej listy 356
Okno dialogowe Wstawianie funkcji 358Wy wietlanie opisoacutew funkcji 358Opisy argumentoacutew 360
Rozdzia 21 Tworzenie dodatkoacutew 361No dobrzehellip czym zatem s dodatki 361Po co tworzy si dodatki 362Praca z dodatkami 363Podstawy tworzenia dodatkoacutew 364Tworzymy przyk adowy dodatek 365
Konfiguracja skoroszytu 365Testowanie skoroszytu 367Tworzenie opisoacutew dodatku 368Ochrona kodu VBA 369Tworzenie dodatku 369Otwieranie dodatku 369Dystrybucja dodatkoacutew 370Modyfikowanie dodatkoacutew 371
Kup książkę Poleć książkę
14 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Cz VI Dekalogi 373Rozdzia 22 Dziesi pyta na temat VBA (wraz z odpowiedziami) 375
Rozdzia 23 (Prawie) dziesi roacutede informacji na temat Excela 379System pomocy j zyka VBA 379Wsparcie techniczne firmy Microsoft 380Inne strony internetowe 380Blogi po wi cone Excelowi 380Google 381Bing 381Lokalne grupy u ytkownikoacutew 381Moje inne ksi ki 381
Rozdzia 24 Dziesi rzeczy ktoacutere powiniene robi w j zyku VBAi ktoacuterych nie powiniene robi 383
Zawsze deklaruj wszystkie zmienne 383Nigdy nie powiniene myli has a chroni cego kod VBA z bezpiecze stwem aplikacji 384Zawsze staraj si wyczy ci i zoptymalizowa kod aplikacji 384Nigdy nie umieszczaj wszystkiego w jednej procedurze 385Zawsze powiniene rozwa y zastosowanie innego oprogramowania 385Nigdy nie zak adaj e ka dy u ytkownik zezwala na uruchamianie makr 386Zawsze staraj si eksperymentowa z nowymi rozwi zaniami 386Nigdy z goacutery nie zak adaj e Twoacutej kod b dzie poprawnie dzia a z innymi wersjami Excela 386Zawsze pami taj o u ytkownikach Twojej aplikacji 387Nigdy nie zapominaj o tworzeniu kopii zapasowych 387
Skorowidz 389
Kup książkę Poleć książkę
Rozdzia 14
Przyk ady i technikiprogramowania w j zyku VBA
W tym rozdziale poznasz szereg przyk adoacutew technik programowania w j zyku VBA dowiesz si jak mo esz przyspieszy dzia anie kodu VBA w Twojej aplikacji
ierz e nauka programowania jest znacznie szybsza i zdecydowanie bardziejefektywna kiedy pracujemy na konkretnych przyk adach Dobrze opracowany
przyk ad o wiele lepiej obja nia zagadnienie ni najbardziej rozbudowany i szczegoacute owyale teoretyczny opis Poniewa czytasz t ksi k prawdopodobnie zgadzasz si ze mnw tej materii W tym rozdziale znajdziesz szereg przyk adoacutew demonstruj cych u ytecznepraktyczne techniki programowania w j zyku VBA
Przyk ady omawiane w tym rozdziale zosta y podzielone na kilka kategorii Oto one
Praca z zakresami
Modyfikacja ustawie Excela
Praca z wykresami
Przyspieszanie i optymalizacja dzia ania kodu VBA
Niektoacutere z prezentowanych przyk adoacutew b dziesz moacuteg od razu wykorzysta w swoichaplikacjach jednak w wi kszo ci przypadkoacutew b d wymaga y pewnego dostosowaniado Twoich aplikacji
Przetwarzanie zakresoacutew komoacuterekWi kszo zada z jakimi b dziesz si styka programuj c w j zyku VBA b dzie zapewnewymaga a mniejszego b d wi kszego przetwarzania zakresoacutew komoacuterek (aby od wie ysobie wiadomo ci na temat obiektu Range powiniene zajrze do rozdzia u 8) Kiedypracujesz z obiektami Range powiniene pami ta o nast puj cych sprawach
Kod VBA nie musi zaznacza danego zakresu aby go przetwarza
Je eli kod VBA zaznacza wybrany zakres przechowuj cy go skoroszyt musi byaktywny
W
Kup książkę Poleć książkę
218 Cz III Podstawy programowania
Rejestrator makr nie zawsze b dzie w stanie wygenerowa optymalny kod VBABardzo cz sto jednak mo esz za jego pomoc utworzy bazowe makro i potemodpowiednio zmodyfikowa kod tak aby sta si bardziej efektywny
Zazwyczaj bardzo dobrym rozwi zaniem jest nadawanie nazw zakresom komoacuterekwykorzystywanym w kodzie VBA Przyk adowo polecenie Range(Total)jestznacznie lepszym rozwi zaniem ni Range(D45) Je li w tym drugim przypadkupoacute niej wstawisz dodatkowy wiersz powy ej wiersza 45 to eby wszystko dzia a opoprawnie b dziesz musia zmodyfikowa makro tak aby korzysta o z nowegopoprawnego adresu komoacuterki a ta po wykonaniu takiej operacji b dzie mia a innyadres (D46) Aby nada nazw wybranemu zakresowi komoacuterek powiniene przejna kart FORMU Y i wybra polecenie Definiuj nazw znajduj ce si w grupiepolece Nazwy zdefiniowane
Kiedy tworzysz makro ktoacutere b dzie przetwarza o zakres komoacuterek zaznaczonyprzez u ytkownika pami taj e u ytkownik mo e zaznaczy kilka ca ych kolumnczy wierszy W wi kszo ci przypadkoacutew z pewno ci nie b dziesz chcia aby makrow p tli przechodzi o w takiej sytuacji przez wszystkie zaznaczone komoacuterki (w czniez pustymi) co mog oby zaj bardzo wiele czasu Dobre makro powinno odszukai przetwarza tylko komoacuterki ktoacutere nie s puste
Excel pozwala na jednoczesne zaznaczanie wielu zakresoacutew komoacuterek Aby to zrobi powiniene zaznaczy pierwszy zakres komoacuterek potem wcisn i przytrzymaklawisz Ctrl i zaznacza kolejne zakresy komoacuterek przy u yciu myszy Kod Twojejaplikacji powinien by przygotowany na takie sytuacje i podejmowa odpowiednieakcje
Skoroszyty z wybranymi przyk adami omawianymi w tym rozdziale znajdziesz na stronieinternetowej naszej ksi ki
Je eli chcesz samodzielnie wpisywa kod omawianych przyk adoacutew przejd do edytoraVBE naciskaj c kombinacj klawiszy lewyAlt+F11 a nast pnie wstaw nowy modu VBAi wpisz kod prezentowanych procedur Upewnij si e Twoacutej skoroszyt jest poprawnieskonfigurowany Je eli na przyk ad kod danego przyk adu odwo uje si do arkuszyo nazwach Arkusz1 i Arkusz2 upewnij si e takie arkusze istniej w Twoim skoroszycie
Kopiowanie zakresoacutewKopiowanie zakresoacutew komoacuterek mo e mia o pretendowa do miana jednej z najcz ciejwykonywanych operacji w Excelu Kiedy w czysz rejestrator makr i skopiujesz zakreskomoacuterek o adresie A1A5 do zakresu B1B5 otrzymasz nast puj ce makro
Sub CopyRange() Range(A1A5)Select SelectionCopy Range(B1)Select ActiveSheetPaste ApplicationCutCopyMode = FalseEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 219
Zwroacute uwag na ostatnie polecenie Zosta o ono wygenerowane przez naci ni cieklawisza Esc po skopiowaniu zakresu komoacuterek co spowodowa o usuni cie przerywanejlinii reprezentuj cej na arkuszu obramowanie kopiowanego zakresu
Przedstawione makro dzia a poprawnie ale zakresy komoacuterek mo na kopiowa w znaczniebardziej efektywny sposoacuteb Identyczny rezultat mo esz osi gn za pomoc proceduryktoacutera sk ada si z tylko jednego wiersza polecenia i nie zaznacza adnych komoacuterek(dzi ki czemu nie wymaga ustawiania w a ciwo ci CutCopyMode na warto False)
Sub CopyRange2() Range(A1A5)Copy Range(B1)End Sub
Procedura przedstawiona powy ej korzysta z tego e metoda Copy mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe kopiowanego zakresu Informacje o tymznalaz em w pomocy systemowej VBA Powy szy przyk ad doskonale roacutewnie ilustrujefakt e rejestrator makr nie zawsze generuje najbardziej efektywny kod
Kopiowanie zakresu o zmiennej wielko ciW wielu przypadkach konieczne jest skopiowanie zakresu komoacuterek dla ktoacuterego dok adnaliczba wierszy i kolumn okre laj cych jego wielko nie jest z goacutery znana Przyk adowomo esz dysponowa skoroszytem ledz cym tygodniow sprzeda w ktoacuterym liczba wierszyzmienia si ka dego tygodnia po wprowadzeniu nowych danych
Na rysunku 141 przedstawiam przyk ad cz sto spotykanego typu arkusza Znajduj cysi w nim zakres komoacuterek sk ada si z kilku wierszy ktoacuterych liczba zmienia si ka degodnia Poniewa nie wiesz jaki jest rozmiar zakresu w danej chwili musisz utworzykod ktoacutery b dzie dzia a bez u ywania adresu zakresu kopiowanych komoacuterek
Rysunek 141Przyk ad zakre-su ktoacutery mo e
sk ada siz dowolnej
liczby wierszy
Makro przedstawione poni ej ilustruje sposoacuteb kopiowania zakresu komoacuterek z arkuszaArkusz1 do arkusza Arkusz2 (pocz wszy od komoacuterki A1) Makro wykorzystuje w a ciwoCurrentRegion ktoacutera zwraca obiekt Range odpowiadaj cy blokowi komoacuterek otaczaj cychokre lon komoacuterk (w tym przypadku o adresie A1)
Kup książkę Poleć książkę
220 Cz III Podstawy programowania
Sub CopyCurrentRegion() Range(A1)CurrentRegionCopy Sheets(Arkusz2)Select Range(A1)Select ActiveSheetPaste Sheets(Arkusz1)Select ApplicationCutCopyMode = FalseEnd Sub
Zastosowanie w a ciwo ci CurrentRegion jest roacutewnowa ne z przej ciem na kartNARZ DZIA G OacuteWNE i wybraniem polecenia Znajd i zaznaczPrzejd do mdashspecjalnie znajduj cego si w grupie opcji Edytowanie i nast pnie zaznaczeniem opcjiBie cy obszar Aby przekona si jak to dzia a podczas wykonywania tych polecepowiniene u y rejestratora makr Zazwyczaj warto w a ciwo ci CurrentRegionreprezentuje prostok tny blok komoacuterek otoczony przez puste wiersze i kolumny
Oczywi cie mo esz zoptymalizowa kod makra przedstawionego powy ej i niezaznacza obszaru docelowego dla kopiowanych komoacuterek Makro przedstawione poni ejkorzysta z faktu e metoda Copy mo e u ywa argumentu wywo ania reprezentuj cegomiejsce docelowe kopiowanego zakresu
Sub CopyCurrentRegion2() Range(A1)CurrentRegionCopy _ Sheets(Arkusz2)Range(A1)End Sub
Je eli zakres komoacuterek ktoacutery chcesz skopiowa jest tabel (zdefiniowan przy u yciapolecenia WSTAWIANIETabeleTabela) ca e zadanie b dzie jeszcze atwiejsze Ka databela posiada swoj nazw (na przyk ad Tabela1) i automatycznie rozszerza si w miardodawania nowych wierszy
Sub CopyTable() Range(Tabela1)Copy Sheets(Arkusz2)Range(A1)End Sub
Je eli sproacutebujesz wykona procedur przedstawion powy ej przekonasz si e wiersznag oacutewka tabeli nie jest kopiowany poniewa obiekt Tabela1 nie obejmuje tegowiersza Je li chcesz aby wiersz nag oacutewka roacutewnie by kopiowany powiniene zmieniodwo anie do tabeli tak jak to zosta o przedstawione poni ej
Range(Tabela1[All])
Zaznaczanie komoacuterekdo ko ca wiersza lub kolumnyPrawdopodobnie bardzo cz sto u ywasz kombinacji klawiszy takich jak Ctrl+Shift+ czy Ctrl+Shift+ do zaznaczania zakresoacutew sk adaj cych si ze wszystkich komoacuterekod komoacuterki aktywnej a do ko ca kolumny czy wiersza Nie jest wi c chyba zaskoczenieme mo esz napisa makro ktoacutere b dzie zaznacza komoacuterki w podobny sposoacuteb
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 221
Do zaznaczania ca ego bloku komoacuterek mo esz u y w a ciwo ci CurrentRegion Ale copowiniene zrobi je eli chcesz zaznaczy powiedzmy tylko jedn kolumn z tegobloku komoacuterek Na szcz cie VBA pozwala na wykonywanie takich operacji Proceduraktoacuterej kod przedstawiam poni ej zaznacza zakres komoacuterek pocz wszy od bie cejaktywnej komoacuterki w doacute kolumny a do komoacuterki znajduj cej si o jeden wiersz powy ejpierwszej pustej komoacuterki tej kolumny Po zaznaczeniu zakresu mo esz przetwarza gow dowolny sposoacuteb mdash kopiowa komoacuterki przenosi je w inne miejsce arkusza zmieniaformatowanie i tak dalej
Sub SelectDown() Range(ActiveCell ActiveCellEnd(xlDown))SelectEnd Sub
Oczywi cie taki sam obszar mo esz roacutewnie zaznaczy r cznie Aby to zrobi powinienezaznaczy pierwsz komoacuterk nast pnie wcisn i przytrzyma klawisz Shift nacisnklawisz End i wreszcie nacisn klawisz (strza ka w doacute )
W przyk adzie wykorzystuj metod End obiektu ActiveCell ktoacutera zwraca obiekt typuRange Metoda End pobiera jeden argument okre laj cy kierunek w ktoacuterym zostaniewykonane zaznaczenie Argumentami tej metody mo e by dowolna ze sta ychprzedstawionych poni ej
xlUp
xlDown
xlToLeft
xlToRight
Pami taj e zaznaczanie zakresu nie jest potrzebne do jego przetwarzania Makroprzedstawione poni ej zmienia czcionk w komoacuterkach zmiennego zakresu (pojedynczakolumna) na pogrubion bez uprzedniego zaznaczenia zakresu
Sub MakeBold() Range(ActiveCell ActiveCellEnd(xlDown)) _ FontBold = TrueEnd Sub
Zaznaczanie ca ego wiersza lub ca ej kolumnyProcedura przedstawiona poni ej ilustruje sposoacuteb zaznaczania kolumny w ktoacuterej znajdujesi aktywna komoacuterka Makro wykorzystuje w a ciwo EntireColumn ktoacutera zwracaobiekt typu Range reprezentuj cy ca kolumn
Sub SelectColumn() ActiveCellEntireColumnSelectEnd Sub
Jak pewnie si spodziewasz w j zyku VBA dost pna jest roacutewnie w a ciwo EntireRowktoacutera zwraca obiekt typu Range reprezentuj cy ca y wiersz
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
8 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Sta e 117Sta e predefiniowane 118
a cuchy znakoacutew 118Daty i godziny 119
Instrukcje przypisania 120Przyk ady instrukcji przypisania 120O znaku roacutewno ci 121Proste operatory 121
Praca z tablicami 123Deklarowanie tablic 123Tablice wielowymiarowe 124Tablice dynamiczne 124
Stosowanie etykiet 125
Rozdzia 8 Praca z obiektami Range 127Szybka powtoacuterka 127Inne sposoby odwo ywania si do zakresu 129
W a ciwo Cells 129W a ciwo Offset 130
Wybrane w a ciwo ci obiektu Range 131W a ciwo Value 131W a ciwo Text 132W a ciwo Count 133W a ciwo ci Column i Row 133W a ciwo Address 133W a ciwo HasFormula 134W a ciwo Font 134W a ciwo Interior 136W a ciwo ci Formula i FormulaLocal 136W a ciwo NumberFormat 137
Wybrane metody obiektu Range 137Metoda Select 137Metody Copy i Paste 138Metoda Clear 138Metoda Delete 139
Rozdzia 9 Praca z funkcjami VBA i arkusza kalkulacyjnego 141Co to jest funkcja 141Stosowanie wbudowanych funkcji VBA 142
Przyk ady funkcji VBA 142Funkcje VBA ktoacutere robi co wi cej ni tylko zwracanie warto ci 144Odkrywanie funkcji VBA 144
U ycie funkcji arkusza kalkulacyjnego w VBA 145Przyk ady funkcji arkusza kalkulacyjnego 148Wprowadzanie funkcji arkusza kalkulacyjnego 150Wi cej o u yciu funkcji arkusza kalkulacyjnego 151
U ycie w asnych funkcji 151
Kup książkę Poleć książkę
Spis tre ci 9
Rozdzia 10 Sterowanie przep ywem i podejmowanie decyzji 153Zabierz si za przep yw kolego 153Instrukcja GoTo 154Decyzje decyzje 155
Struktura If-Then 155Struktura Select Case 159
Entliczek p tliczek mdash czyli jak u ywa p tli 162P tle For-Next 162P tla Do-While 167P tla Do-Until 168
U ycie p tli For Each-Next z kolekcjami 168
Rozdzia 11 Automatyczne procedury i zdarzenia 171Przygotowanie do wielkiego zdarzenia 171
Czy zdarzenia s przydatne 173Programowanie procedur obs ugi zdarze 173
Gdzie jest umieszczony kod VBA 174Tworzenie procedury obs ugi zdarzenia 175Przyk ady wprowadzaj ce 176
Zdarzenie Open dla skoroszytu 176Zdarzenie BeforeClose dla skoroszytu 179Zdarzenie BeforeSave dla skoroszytu 179
Przyk ady zdarze aktywacyjnych 180Zdarzenia aktywacji i dezaktywacji arkusza 180Zdarzenia aktywacji i dezaktywacji skoroszytu 181Zdarzenia aktywacji skoroszytu 182
Inne zdarzenia dotycz ce arkusza 183Zdarzenie BeforeDoubleClick 183Zdarzenie BeforeRightClick 184Zdarzenie Change 184
Zdarzenia niezwi zane z obiektami 186Zdarzenie OnTime 186Zdarzenia naci ni cia klawisza 188
Rozdzia 12 Techniki obs ugi b doacutew 191Rodzaje b doacutew 191B dny przyk ad 192
To makro nie jest idealne 192Makro wci nie jest idealne 193Czy teraz makro jest idealne 194Rezygnacja z idea u 195
Inny sposoacuteb obs ugi b doacutew 195Korekta procedury EnterSquareRoot 195O instrukcji On Error 196
Obs uga b doacutew mdash szczegoacute owe informacje 197Wznawianie wykonywania kodu po wyst pieniu b du 197Obs uga b doacutew w pigu ce 199
Kup książkę Poleć książkę
10 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kiedy ignorowa b dy 199Rozpoznawanie okre lonych b doacutew 200
Zamierzony b d 201
Rozdzia 13 Dezynsekcja kodu czyli jak walczy z pluskwami 203Rodzaje pluskiew 203Podstawy entomologii czyli jak zidentyfikowa pluskw 205Metody i techniki walki z pluskwami 205
Przegl danie kodu VBA 206Umieszczanie funkcji MsgBox w kluczowych miejscach kodu 206Umieszczanie polecenia DebugPrint w kluczowych miejscach kodu 208Korzystanie z wbudowanych narz dzi Excela wspomagaj cych odpluskwianie kodu VBA 209
Kilka s oacutew o debuggerze 209Ustawianie punktoacutew przerwa w kodzie programu 209Zastosowanie okna Watch 212Zastosowanie okna Locals 213
Jak zredukowa liczb b doacutew w kodzie programu 215
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 217Przetwarzanie zakresoacutew komoacuterek 217
Kopiowanie zakresoacutew 218Kopiowanie zakresu o zmiennej wielko ci 219Zaznaczanie komoacuterek do ko ca wiersza lub kolumny 220Zaznaczanie ca ego wiersza lub ca ej kolumny 221Przenoszenie zakresoacutew 222Wydajne przetwarzanie komoacuterek zaznaczonego zakresu przy u yciu p tli 222Wydajne przetwarzanie komoacuterek zaznaczonego zakresu przy u yciu p tli (cz II) 224Wprowadzanie warto ci do komoacuterki 225Okre lanie typu zaznaczonego zakresu 226Identyfikowanie zaznacze wielokrotnych 226
Zmiana ustawie Excela 227Zmiana ustawie logicznych (opcje typu Boolean) 227Zmiana innych opcji (typu non-Boolean) 228
Praca z wykresami 229Metoda AddChart kontra metoda AddChart2 230Modyfikowanie typu wykresu 231Przechodzenie w p tli przez elementy kolekcji ChartObjects 232Modyfikowanie w a ciwo ci wykresu 232Zmiana formatowania wykresoacutew 233
Jak przyspieszy dzia anie kodu VBA 234Wy czanie aktualizacji ekranu 234Wy czenie automatycznego przeliczania skoroszytu 235Wy czanie irytuj cych ostrze e 236Upraszczanie odwo a do obiektoacutew 236Deklarowanie typoacutew zmiennych 237Zastosowanie struktury With-End With 238
Kup książkę Poleć książkę
Spis tre ci 11
Cz IV Komunikacja z u ytkownikiem 239Rozdzia 15 Proste okna dialogowe 241
Co zamiast formularzy UserForm 241Funkcja MsgBox 242
Wy wietlanie prostych okien dialogowych 243Pobieranie odpowiedzi z okna dialogowego 243Dostosowywanie wygl du okien dialogowych do w asnych potrzeb 244
Funkcja InputBox 247Sk adnia funkcji InputBox 248Przyk ad zastosowania funkcji InputBox 248Inny rodzaj okna dialogowego InputBox 249
Metoda GetOpenFilename 250Sk adnia metody GetOpenFilename 251Przyk ad zastosowania metody GetOpenFilename 251
Metoda GetSaveAsFilename 253Pobieranie nazwy folderu 254Wy wietlanie wbudowanych okien dialogowych programu Excel 254
Rozdzia 16 Wprowadzenie do formularzy UserForm 257Kiedy u ywa formularzy UserForm 257Tworzenie formularzy UserForm mdash wprowadzenie 258Praca z formularzami UserForm 259
Wstawianie nowego formularza UserForm 259Umieszczanie formantoacutew na formularzu UserForm 260Modyfikacja w a ciwo ci formantoacutew formularza UserForm 261Przegl danie okna Code formularza UserForm 263Wy wietlanie formularzy UserForm 263Pobieranie i wykorzystywanie informacji z formularzy UserForm 264
Przyk ad tworzenia formularza UserForm 264Tworzenie formularza UserForm 265Dodawanie przyciskoacutew polece (formanty CommandButton) 265Dodawanie przyciskoacutew opcji (formanty OptionButton) 267Dodawanie procedur obs ugi zdarze 268Tworzenie makra ktoacutere wy wietla formularz na ekranie 270Udost pnianie makra u ytkownikowi 271Testowanie dzia ania makra 272
Rozdzia 17 Praca z formantami formularza UserForm 275Rozpoczynamy prac z formantami formularzy UserForm 275
Dodawanie formantoacutew 276Wprowadzenie do w a ciwo ci formantoacutew 277
Formanty okien dialogowych mdash szczegoacute y 278Formant CheckBox (pole wyboru) 279Formant ComboBox (pole kombi) 280Formant CommandButton (przycisk polecenia) 281Formant Frame (pole grupy) 281Formant Image (pole obrazu) 282
Kup książkę Poleć książkę
12 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Formant Label (pole etykiety) 283Formant ListBox (pole listy) 283Formant MultiPage 284Formant OptionButton (przycisk opcji) 285Formant RefEdit (pole zakresu) 286Formant ScrollBar (pasek przewijania) 286Formant SpinButton (pokr t o) 287Formant TabStrip (pole karty) 288Formant TextBox (pole tekstowe) 288Formant ToggleButton (przycisk prze cznika) 289
Praca z formantami w oknach dialogowych 289Zmiana rozmiaroacutew i przenoszenie formantoacutew w inne miejsce 289Rozmieszczanie i wyroacutewnywanie po o enia formantoacutew w oknie dialogowym 290Obs uga u ytkownikoacutew preferuj cych korzystanie z klawiatury 291Testowanie formularzy UserForm 293
Estetyka okien dialogowych 293
Rozdzia 18 Techniki pracy z formularzami UserForm 295Zastosowanie w asnych okien dialogowych 295Przyk adowy formularz UserForm 296
Tworzenie okna dialogowego 296Tworzenie kodu procedury wy wietlaj cej okno dialogowe 298Udost pnianie makra u ytkownikowi 299Testowanie okna dialogowego 299Dodawanie procedur obs ugi zdarze 300Sprawdzanie poprawno ci danych 302Teraz okno dialogowe dzia a tak jak powinno 302
Wi cej przyk adoacutew formularzy UserForm 302Zastosowanie formantoacutew ListBox 303Zaznaczanie zakresoacutew 307Praca z wieloma grupami formantoacutew OptionButton 309Zastosowanie formantoacutew SpinButton oraz TextBox 310Wykorzystywanie formularza UserForm jako wska nika post pu zadania 312Tworzenie niemodalnych okien dialogowych z wieloma kartami 315Wy wietlanie wykresoacutew na formularzach UserForm 317
Lista kontrolna tworzenia i testowania okien dialogowych 318
Rozdzia 19 Udost pnianie makr z poziomu interfejsu u ytkownika 321Dostosowywanie Wst ki 321
R czne dopasowywanie Wst ki do w asnych potrzeb 322Dodawanie do Wst ki przycisku w asnego makra 324Dostosowywanie Wst ki za pomoc kodu XML 324
Dostosowywanie menu podr cznego 329Rodzaje obiektoacutew CommandBar 329Wy wietlanie wszystkich menu podr cznych 329Odwo ania do elementoacutew kolekcji CommandBars 330Odwo ania do formantoacutew obiektu CommandBar 331W a ciwo ci formantoacutew obiektu CommandBar 332
Kup książkę Poleć książkę
Spis tre ci 13
Przyk ady zastosowania VBA do modyfikacji menu podr cznego 334Resetowanie wszystkich wbudowanych menu podr cznych 334Dodawanie nowego elementu do menu podr cznego Cell 335Wy czanie menu podr cznego 337
Tworzenie w asnych paskoacutew narz dzi 338
Cz V Od teorii do praktyki 341Rozdzia 20 Jak tworzy w asne funkcje arkuszowe i jak prze y aby o tym opowiedzie 343
Dlaczego tworzymy w asne funkcje 343Podstawowe informacje o funkcjach VBA 344Tworzenie funkcji 345Praca z argumentami funkcji 345Przyk ady funkcji 346
Funkcje bezargumentowe 346Funkcje jednoargumentowe 346Funkcje z dwoma argumentami 348Funkcje pobieraj ce zakres jako argument 349Funkcje z argumentami opcjonalnymi 351
Funkcje opakowuj ce 353Funkcja NumberFormat 353Funkcja ExtractElement 354Funkcja SayIt 354Funkcja IsLike 355
Funkcje zwracaj ce tablice 355Zwracanie tablicy zawieraj cej nazwy miesi cy 355Zwracanie posortowanej listy 356
Okno dialogowe Wstawianie funkcji 358Wy wietlanie opisoacutew funkcji 358Opisy argumentoacutew 360
Rozdzia 21 Tworzenie dodatkoacutew 361No dobrzehellip czym zatem s dodatki 361Po co tworzy si dodatki 362Praca z dodatkami 363Podstawy tworzenia dodatkoacutew 364Tworzymy przyk adowy dodatek 365
Konfiguracja skoroszytu 365Testowanie skoroszytu 367Tworzenie opisoacutew dodatku 368Ochrona kodu VBA 369Tworzenie dodatku 369Otwieranie dodatku 369Dystrybucja dodatkoacutew 370Modyfikowanie dodatkoacutew 371
Kup książkę Poleć książkę
14 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Cz VI Dekalogi 373Rozdzia 22 Dziesi pyta na temat VBA (wraz z odpowiedziami) 375
Rozdzia 23 (Prawie) dziesi roacutede informacji na temat Excela 379System pomocy j zyka VBA 379Wsparcie techniczne firmy Microsoft 380Inne strony internetowe 380Blogi po wi cone Excelowi 380Google 381Bing 381Lokalne grupy u ytkownikoacutew 381Moje inne ksi ki 381
Rozdzia 24 Dziesi rzeczy ktoacutere powiniene robi w j zyku VBAi ktoacuterych nie powiniene robi 383
Zawsze deklaruj wszystkie zmienne 383Nigdy nie powiniene myli has a chroni cego kod VBA z bezpiecze stwem aplikacji 384Zawsze staraj si wyczy ci i zoptymalizowa kod aplikacji 384Nigdy nie umieszczaj wszystkiego w jednej procedurze 385Zawsze powiniene rozwa y zastosowanie innego oprogramowania 385Nigdy nie zak adaj e ka dy u ytkownik zezwala na uruchamianie makr 386Zawsze staraj si eksperymentowa z nowymi rozwi zaniami 386Nigdy z goacutery nie zak adaj e Twoacutej kod b dzie poprawnie dzia a z innymi wersjami Excela 386Zawsze pami taj o u ytkownikach Twojej aplikacji 387Nigdy nie zapominaj o tworzeniu kopii zapasowych 387
Skorowidz 389
Kup książkę Poleć książkę
Rozdzia 14
Przyk ady i technikiprogramowania w j zyku VBA
W tym rozdziale poznasz szereg przyk adoacutew technik programowania w j zyku VBA dowiesz si jak mo esz przyspieszy dzia anie kodu VBA w Twojej aplikacji
ierz e nauka programowania jest znacznie szybsza i zdecydowanie bardziejefektywna kiedy pracujemy na konkretnych przyk adach Dobrze opracowany
przyk ad o wiele lepiej obja nia zagadnienie ni najbardziej rozbudowany i szczegoacute owyale teoretyczny opis Poniewa czytasz t ksi k prawdopodobnie zgadzasz si ze mnw tej materii W tym rozdziale znajdziesz szereg przyk adoacutew demonstruj cych u ytecznepraktyczne techniki programowania w j zyku VBA
Przyk ady omawiane w tym rozdziale zosta y podzielone na kilka kategorii Oto one
Praca z zakresami
Modyfikacja ustawie Excela
Praca z wykresami
Przyspieszanie i optymalizacja dzia ania kodu VBA
Niektoacutere z prezentowanych przyk adoacutew b dziesz moacuteg od razu wykorzysta w swoichaplikacjach jednak w wi kszo ci przypadkoacutew b d wymaga y pewnego dostosowaniado Twoich aplikacji
Przetwarzanie zakresoacutew komoacuterekWi kszo zada z jakimi b dziesz si styka programuj c w j zyku VBA b dzie zapewnewymaga a mniejszego b d wi kszego przetwarzania zakresoacutew komoacuterek (aby od wie ysobie wiadomo ci na temat obiektu Range powiniene zajrze do rozdzia u 8) Kiedypracujesz z obiektami Range powiniene pami ta o nast puj cych sprawach
Kod VBA nie musi zaznacza danego zakresu aby go przetwarza
Je eli kod VBA zaznacza wybrany zakres przechowuj cy go skoroszyt musi byaktywny
W
Kup książkę Poleć książkę
218 Cz III Podstawy programowania
Rejestrator makr nie zawsze b dzie w stanie wygenerowa optymalny kod VBABardzo cz sto jednak mo esz za jego pomoc utworzy bazowe makro i potemodpowiednio zmodyfikowa kod tak aby sta si bardziej efektywny
Zazwyczaj bardzo dobrym rozwi zaniem jest nadawanie nazw zakresom komoacuterekwykorzystywanym w kodzie VBA Przyk adowo polecenie Range(Total)jestznacznie lepszym rozwi zaniem ni Range(D45) Je li w tym drugim przypadkupoacute niej wstawisz dodatkowy wiersz powy ej wiersza 45 to eby wszystko dzia a opoprawnie b dziesz musia zmodyfikowa makro tak aby korzysta o z nowegopoprawnego adresu komoacuterki a ta po wykonaniu takiej operacji b dzie mia a innyadres (D46) Aby nada nazw wybranemu zakresowi komoacuterek powiniene przejna kart FORMU Y i wybra polecenie Definiuj nazw znajduj ce si w grupiepolece Nazwy zdefiniowane
Kiedy tworzysz makro ktoacutere b dzie przetwarza o zakres komoacuterek zaznaczonyprzez u ytkownika pami taj e u ytkownik mo e zaznaczy kilka ca ych kolumnczy wierszy W wi kszo ci przypadkoacutew z pewno ci nie b dziesz chcia aby makrow p tli przechodzi o w takiej sytuacji przez wszystkie zaznaczone komoacuterki (w czniez pustymi) co mog oby zaj bardzo wiele czasu Dobre makro powinno odszukai przetwarza tylko komoacuterki ktoacutere nie s puste
Excel pozwala na jednoczesne zaznaczanie wielu zakresoacutew komoacuterek Aby to zrobi powiniene zaznaczy pierwszy zakres komoacuterek potem wcisn i przytrzymaklawisz Ctrl i zaznacza kolejne zakresy komoacuterek przy u yciu myszy Kod Twojejaplikacji powinien by przygotowany na takie sytuacje i podejmowa odpowiednieakcje
Skoroszyty z wybranymi przyk adami omawianymi w tym rozdziale znajdziesz na stronieinternetowej naszej ksi ki
Je eli chcesz samodzielnie wpisywa kod omawianych przyk adoacutew przejd do edytoraVBE naciskaj c kombinacj klawiszy lewyAlt+F11 a nast pnie wstaw nowy modu VBAi wpisz kod prezentowanych procedur Upewnij si e Twoacutej skoroszyt jest poprawnieskonfigurowany Je eli na przyk ad kod danego przyk adu odwo uje si do arkuszyo nazwach Arkusz1 i Arkusz2 upewnij si e takie arkusze istniej w Twoim skoroszycie
Kopiowanie zakresoacutewKopiowanie zakresoacutew komoacuterek mo e mia o pretendowa do miana jednej z najcz ciejwykonywanych operacji w Excelu Kiedy w czysz rejestrator makr i skopiujesz zakreskomoacuterek o adresie A1A5 do zakresu B1B5 otrzymasz nast puj ce makro
Sub CopyRange() Range(A1A5)Select SelectionCopy Range(B1)Select ActiveSheetPaste ApplicationCutCopyMode = FalseEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 219
Zwroacute uwag na ostatnie polecenie Zosta o ono wygenerowane przez naci ni cieklawisza Esc po skopiowaniu zakresu komoacuterek co spowodowa o usuni cie przerywanejlinii reprezentuj cej na arkuszu obramowanie kopiowanego zakresu
Przedstawione makro dzia a poprawnie ale zakresy komoacuterek mo na kopiowa w znaczniebardziej efektywny sposoacuteb Identyczny rezultat mo esz osi gn za pomoc proceduryktoacutera sk ada si z tylko jednego wiersza polecenia i nie zaznacza adnych komoacuterek(dzi ki czemu nie wymaga ustawiania w a ciwo ci CutCopyMode na warto False)
Sub CopyRange2() Range(A1A5)Copy Range(B1)End Sub
Procedura przedstawiona powy ej korzysta z tego e metoda Copy mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe kopiowanego zakresu Informacje o tymznalaz em w pomocy systemowej VBA Powy szy przyk ad doskonale roacutewnie ilustrujefakt e rejestrator makr nie zawsze generuje najbardziej efektywny kod
Kopiowanie zakresu o zmiennej wielko ciW wielu przypadkach konieczne jest skopiowanie zakresu komoacuterek dla ktoacuterego dok adnaliczba wierszy i kolumn okre laj cych jego wielko nie jest z goacutery znana Przyk adowomo esz dysponowa skoroszytem ledz cym tygodniow sprzeda w ktoacuterym liczba wierszyzmienia si ka dego tygodnia po wprowadzeniu nowych danych
Na rysunku 141 przedstawiam przyk ad cz sto spotykanego typu arkusza Znajduj cysi w nim zakres komoacuterek sk ada si z kilku wierszy ktoacuterych liczba zmienia si ka degodnia Poniewa nie wiesz jaki jest rozmiar zakresu w danej chwili musisz utworzykod ktoacutery b dzie dzia a bez u ywania adresu zakresu kopiowanych komoacuterek
Rysunek 141Przyk ad zakre-su ktoacutery mo e
sk ada siz dowolnej
liczby wierszy
Makro przedstawione poni ej ilustruje sposoacuteb kopiowania zakresu komoacuterek z arkuszaArkusz1 do arkusza Arkusz2 (pocz wszy od komoacuterki A1) Makro wykorzystuje w a ciwoCurrentRegion ktoacutera zwraca obiekt Range odpowiadaj cy blokowi komoacuterek otaczaj cychokre lon komoacuterk (w tym przypadku o adresie A1)
Kup książkę Poleć książkę
220 Cz III Podstawy programowania
Sub CopyCurrentRegion() Range(A1)CurrentRegionCopy Sheets(Arkusz2)Select Range(A1)Select ActiveSheetPaste Sheets(Arkusz1)Select ApplicationCutCopyMode = FalseEnd Sub
Zastosowanie w a ciwo ci CurrentRegion jest roacutewnowa ne z przej ciem na kartNARZ DZIA G OacuteWNE i wybraniem polecenia Znajd i zaznaczPrzejd do mdashspecjalnie znajduj cego si w grupie opcji Edytowanie i nast pnie zaznaczeniem opcjiBie cy obszar Aby przekona si jak to dzia a podczas wykonywania tych polecepowiniene u y rejestratora makr Zazwyczaj warto w a ciwo ci CurrentRegionreprezentuje prostok tny blok komoacuterek otoczony przez puste wiersze i kolumny
Oczywi cie mo esz zoptymalizowa kod makra przedstawionego powy ej i niezaznacza obszaru docelowego dla kopiowanych komoacuterek Makro przedstawione poni ejkorzysta z faktu e metoda Copy mo e u ywa argumentu wywo ania reprezentuj cegomiejsce docelowe kopiowanego zakresu
Sub CopyCurrentRegion2() Range(A1)CurrentRegionCopy _ Sheets(Arkusz2)Range(A1)End Sub
Je eli zakres komoacuterek ktoacutery chcesz skopiowa jest tabel (zdefiniowan przy u yciapolecenia WSTAWIANIETabeleTabela) ca e zadanie b dzie jeszcze atwiejsze Ka databela posiada swoj nazw (na przyk ad Tabela1) i automatycznie rozszerza si w miardodawania nowych wierszy
Sub CopyTable() Range(Tabela1)Copy Sheets(Arkusz2)Range(A1)End Sub
Je eli sproacutebujesz wykona procedur przedstawion powy ej przekonasz si e wiersznag oacutewka tabeli nie jest kopiowany poniewa obiekt Tabela1 nie obejmuje tegowiersza Je li chcesz aby wiersz nag oacutewka roacutewnie by kopiowany powiniene zmieniodwo anie do tabeli tak jak to zosta o przedstawione poni ej
Range(Tabela1[All])
Zaznaczanie komoacuterekdo ko ca wiersza lub kolumnyPrawdopodobnie bardzo cz sto u ywasz kombinacji klawiszy takich jak Ctrl+Shift+ czy Ctrl+Shift+ do zaznaczania zakresoacutew sk adaj cych si ze wszystkich komoacuterekod komoacuterki aktywnej a do ko ca kolumny czy wiersza Nie jest wi c chyba zaskoczenieme mo esz napisa makro ktoacutere b dzie zaznacza komoacuterki w podobny sposoacuteb
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 221
Do zaznaczania ca ego bloku komoacuterek mo esz u y w a ciwo ci CurrentRegion Ale copowiniene zrobi je eli chcesz zaznaczy powiedzmy tylko jedn kolumn z tegobloku komoacuterek Na szcz cie VBA pozwala na wykonywanie takich operacji Proceduraktoacuterej kod przedstawiam poni ej zaznacza zakres komoacuterek pocz wszy od bie cejaktywnej komoacuterki w doacute kolumny a do komoacuterki znajduj cej si o jeden wiersz powy ejpierwszej pustej komoacuterki tej kolumny Po zaznaczeniu zakresu mo esz przetwarza gow dowolny sposoacuteb mdash kopiowa komoacuterki przenosi je w inne miejsce arkusza zmieniaformatowanie i tak dalej
Sub SelectDown() Range(ActiveCell ActiveCellEnd(xlDown))SelectEnd Sub
Oczywi cie taki sam obszar mo esz roacutewnie zaznaczy r cznie Aby to zrobi powinienezaznaczy pierwsz komoacuterk nast pnie wcisn i przytrzyma klawisz Shift nacisnklawisz End i wreszcie nacisn klawisz (strza ka w doacute )
W przyk adzie wykorzystuj metod End obiektu ActiveCell ktoacutera zwraca obiekt typuRange Metoda End pobiera jeden argument okre laj cy kierunek w ktoacuterym zostaniewykonane zaznaczenie Argumentami tej metody mo e by dowolna ze sta ychprzedstawionych poni ej
xlUp
xlDown
xlToLeft
xlToRight
Pami taj e zaznaczanie zakresu nie jest potrzebne do jego przetwarzania Makroprzedstawione poni ej zmienia czcionk w komoacuterkach zmiennego zakresu (pojedynczakolumna) na pogrubion bez uprzedniego zaznaczenia zakresu
Sub MakeBold() Range(ActiveCell ActiveCellEnd(xlDown)) _ FontBold = TrueEnd Sub
Zaznaczanie ca ego wiersza lub ca ej kolumnyProcedura przedstawiona poni ej ilustruje sposoacuteb zaznaczania kolumny w ktoacuterej znajdujesi aktywna komoacuterka Makro wykorzystuje w a ciwo EntireColumn ktoacutera zwracaobiekt typu Range reprezentuj cy ca kolumn
Sub SelectColumn() ActiveCellEntireColumnSelectEnd Sub
Jak pewnie si spodziewasz w j zyku VBA dost pna jest roacutewnie w a ciwo EntireRowktoacutera zwraca obiekt typu Range reprezentuj cy ca y wiersz
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Spis tre ci 9
Rozdzia 10 Sterowanie przep ywem i podejmowanie decyzji 153Zabierz si za przep yw kolego 153Instrukcja GoTo 154Decyzje decyzje 155
Struktura If-Then 155Struktura Select Case 159
Entliczek p tliczek mdash czyli jak u ywa p tli 162P tle For-Next 162P tla Do-While 167P tla Do-Until 168
U ycie p tli For Each-Next z kolekcjami 168
Rozdzia 11 Automatyczne procedury i zdarzenia 171Przygotowanie do wielkiego zdarzenia 171
Czy zdarzenia s przydatne 173Programowanie procedur obs ugi zdarze 173
Gdzie jest umieszczony kod VBA 174Tworzenie procedury obs ugi zdarzenia 175Przyk ady wprowadzaj ce 176
Zdarzenie Open dla skoroszytu 176Zdarzenie BeforeClose dla skoroszytu 179Zdarzenie BeforeSave dla skoroszytu 179
Przyk ady zdarze aktywacyjnych 180Zdarzenia aktywacji i dezaktywacji arkusza 180Zdarzenia aktywacji i dezaktywacji skoroszytu 181Zdarzenia aktywacji skoroszytu 182
Inne zdarzenia dotycz ce arkusza 183Zdarzenie BeforeDoubleClick 183Zdarzenie BeforeRightClick 184Zdarzenie Change 184
Zdarzenia niezwi zane z obiektami 186Zdarzenie OnTime 186Zdarzenia naci ni cia klawisza 188
Rozdzia 12 Techniki obs ugi b doacutew 191Rodzaje b doacutew 191B dny przyk ad 192
To makro nie jest idealne 192Makro wci nie jest idealne 193Czy teraz makro jest idealne 194Rezygnacja z idea u 195
Inny sposoacuteb obs ugi b doacutew 195Korekta procedury EnterSquareRoot 195O instrukcji On Error 196
Obs uga b doacutew mdash szczegoacute owe informacje 197Wznawianie wykonywania kodu po wyst pieniu b du 197Obs uga b doacutew w pigu ce 199
Kup książkę Poleć książkę
10 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kiedy ignorowa b dy 199Rozpoznawanie okre lonych b doacutew 200
Zamierzony b d 201
Rozdzia 13 Dezynsekcja kodu czyli jak walczy z pluskwami 203Rodzaje pluskiew 203Podstawy entomologii czyli jak zidentyfikowa pluskw 205Metody i techniki walki z pluskwami 205
Przegl danie kodu VBA 206Umieszczanie funkcji MsgBox w kluczowych miejscach kodu 206Umieszczanie polecenia DebugPrint w kluczowych miejscach kodu 208Korzystanie z wbudowanych narz dzi Excela wspomagaj cych odpluskwianie kodu VBA 209
Kilka s oacutew o debuggerze 209Ustawianie punktoacutew przerwa w kodzie programu 209Zastosowanie okna Watch 212Zastosowanie okna Locals 213
Jak zredukowa liczb b doacutew w kodzie programu 215
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 217Przetwarzanie zakresoacutew komoacuterek 217
Kopiowanie zakresoacutew 218Kopiowanie zakresu o zmiennej wielko ci 219Zaznaczanie komoacuterek do ko ca wiersza lub kolumny 220Zaznaczanie ca ego wiersza lub ca ej kolumny 221Przenoszenie zakresoacutew 222Wydajne przetwarzanie komoacuterek zaznaczonego zakresu przy u yciu p tli 222Wydajne przetwarzanie komoacuterek zaznaczonego zakresu przy u yciu p tli (cz II) 224Wprowadzanie warto ci do komoacuterki 225Okre lanie typu zaznaczonego zakresu 226Identyfikowanie zaznacze wielokrotnych 226
Zmiana ustawie Excela 227Zmiana ustawie logicznych (opcje typu Boolean) 227Zmiana innych opcji (typu non-Boolean) 228
Praca z wykresami 229Metoda AddChart kontra metoda AddChart2 230Modyfikowanie typu wykresu 231Przechodzenie w p tli przez elementy kolekcji ChartObjects 232Modyfikowanie w a ciwo ci wykresu 232Zmiana formatowania wykresoacutew 233
Jak przyspieszy dzia anie kodu VBA 234Wy czanie aktualizacji ekranu 234Wy czenie automatycznego przeliczania skoroszytu 235Wy czanie irytuj cych ostrze e 236Upraszczanie odwo a do obiektoacutew 236Deklarowanie typoacutew zmiennych 237Zastosowanie struktury With-End With 238
Kup książkę Poleć książkę
Spis tre ci 11
Cz IV Komunikacja z u ytkownikiem 239Rozdzia 15 Proste okna dialogowe 241
Co zamiast formularzy UserForm 241Funkcja MsgBox 242
Wy wietlanie prostych okien dialogowych 243Pobieranie odpowiedzi z okna dialogowego 243Dostosowywanie wygl du okien dialogowych do w asnych potrzeb 244
Funkcja InputBox 247Sk adnia funkcji InputBox 248Przyk ad zastosowania funkcji InputBox 248Inny rodzaj okna dialogowego InputBox 249
Metoda GetOpenFilename 250Sk adnia metody GetOpenFilename 251Przyk ad zastosowania metody GetOpenFilename 251
Metoda GetSaveAsFilename 253Pobieranie nazwy folderu 254Wy wietlanie wbudowanych okien dialogowych programu Excel 254
Rozdzia 16 Wprowadzenie do formularzy UserForm 257Kiedy u ywa formularzy UserForm 257Tworzenie formularzy UserForm mdash wprowadzenie 258Praca z formularzami UserForm 259
Wstawianie nowego formularza UserForm 259Umieszczanie formantoacutew na formularzu UserForm 260Modyfikacja w a ciwo ci formantoacutew formularza UserForm 261Przegl danie okna Code formularza UserForm 263Wy wietlanie formularzy UserForm 263Pobieranie i wykorzystywanie informacji z formularzy UserForm 264
Przyk ad tworzenia formularza UserForm 264Tworzenie formularza UserForm 265Dodawanie przyciskoacutew polece (formanty CommandButton) 265Dodawanie przyciskoacutew opcji (formanty OptionButton) 267Dodawanie procedur obs ugi zdarze 268Tworzenie makra ktoacutere wy wietla formularz na ekranie 270Udost pnianie makra u ytkownikowi 271Testowanie dzia ania makra 272
Rozdzia 17 Praca z formantami formularza UserForm 275Rozpoczynamy prac z formantami formularzy UserForm 275
Dodawanie formantoacutew 276Wprowadzenie do w a ciwo ci formantoacutew 277
Formanty okien dialogowych mdash szczegoacute y 278Formant CheckBox (pole wyboru) 279Formant ComboBox (pole kombi) 280Formant CommandButton (przycisk polecenia) 281Formant Frame (pole grupy) 281Formant Image (pole obrazu) 282
Kup książkę Poleć książkę
12 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Formant Label (pole etykiety) 283Formant ListBox (pole listy) 283Formant MultiPage 284Formant OptionButton (przycisk opcji) 285Formant RefEdit (pole zakresu) 286Formant ScrollBar (pasek przewijania) 286Formant SpinButton (pokr t o) 287Formant TabStrip (pole karty) 288Formant TextBox (pole tekstowe) 288Formant ToggleButton (przycisk prze cznika) 289
Praca z formantami w oknach dialogowych 289Zmiana rozmiaroacutew i przenoszenie formantoacutew w inne miejsce 289Rozmieszczanie i wyroacutewnywanie po o enia formantoacutew w oknie dialogowym 290Obs uga u ytkownikoacutew preferuj cych korzystanie z klawiatury 291Testowanie formularzy UserForm 293
Estetyka okien dialogowych 293
Rozdzia 18 Techniki pracy z formularzami UserForm 295Zastosowanie w asnych okien dialogowych 295Przyk adowy formularz UserForm 296
Tworzenie okna dialogowego 296Tworzenie kodu procedury wy wietlaj cej okno dialogowe 298Udost pnianie makra u ytkownikowi 299Testowanie okna dialogowego 299Dodawanie procedur obs ugi zdarze 300Sprawdzanie poprawno ci danych 302Teraz okno dialogowe dzia a tak jak powinno 302
Wi cej przyk adoacutew formularzy UserForm 302Zastosowanie formantoacutew ListBox 303Zaznaczanie zakresoacutew 307Praca z wieloma grupami formantoacutew OptionButton 309Zastosowanie formantoacutew SpinButton oraz TextBox 310Wykorzystywanie formularza UserForm jako wska nika post pu zadania 312Tworzenie niemodalnych okien dialogowych z wieloma kartami 315Wy wietlanie wykresoacutew na formularzach UserForm 317
Lista kontrolna tworzenia i testowania okien dialogowych 318
Rozdzia 19 Udost pnianie makr z poziomu interfejsu u ytkownika 321Dostosowywanie Wst ki 321
R czne dopasowywanie Wst ki do w asnych potrzeb 322Dodawanie do Wst ki przycisku w asnego makra 324Dostosowywanie Wst ki za pomoc kodu XML 324
Dostosowywanie menu podr cznego 329Rodzaje obiektoacutew CommandBar 329Wy wietlanie wszystkich menu podr cznych 329Odwo ania do elementoacutew kolekcji CommandBars 330Odwo ania do formantoacutew obiektu CommandBar 331W a ciwo ci formantoacutew obiektu CommandBar 332
Kup książkę Poleć książkę
Spis tre ci 13
Przyk ady zastosowania VBA do modyfikacji menu podr cznego 334Resetowanie wszystkich wbudowanych menu podr cznych 334Dodawanie nowego elementu do menu podr cznego Cell 335Wy czanie menu podr cznego 337
Tworzenie w asnych paskoacutew narz dzi 338
Cz V Od teorii do praktyki 341Rozdzia 20 Jak tworzy w asne funkcje arkuszowe i jak prze y aby o tym opowiedzie 343
Dlaczego tworzymy w asne funkcje 343Podstawowe informacje o funkcjach VBA 344Tworzenie funkcji 345Praca z argumentami funkcji 345Przyk ady funkcji 346
Funkcje bezargumentowe 346Funkcje jednoargumentowe 346Funkcje z dwoma argumentami 348Funkcje pobieraj ce zakres jako argument 349Funkcje z argumentami opcjonalnymi 351
Funkcje opakowuj ce 353Funkcja NumberFormat 353Funkcja ExtractElement 354Funkcja SayIt 354Funkcja IsLike 355
Funkcje zwracaj ce tablice 355Zwracanie tablicy zawieraj cej nazwy miesi cy 355Zwracanie posortowanej listy 356
Okno dialogowe Wstawianie funkcji 358Wy wietlanie opisoacutew funkcji 358Opisy argumentoacutew 360
Rozdzia 21 Tworzenie dodatkoacutew 361No dobrzehellip czym zatem s dodatki 361Po co tworzy si dodatki 362Praca z dodatkami 363Podstawy tworzenia dodatkoacutew 364Tworzymy przyk adowy dodatek 365
Konfiguracja skoroszytu 365Testowanie skoroszytu 367Tworzenie opisoacutew dodatku 368Ochrona kodu VBA 369Tworzenie dodatku 369Otwieranie dodatku 369Dystrybucja dodatkoacutew 370Modyfikowanie dodatkoacutew 371
Kup książkę Poleć książkę
14 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Cz VI Dekalogi 373Rozdzia 22 Dziesi pyta na temat VBA (wraz z odpowiedziami) 375
Rozdzia 23 (Prawie) dziesi roacutede informacji na temat Excela 379System pomocy j zyka VBA 379Wsparcie techniczne firmy Microsoft 380Inne strony internetowe 380Blogi po wi cone Excelowi 380Google 381Bing 381Lokalne grupy u ytkownikoacutew 381Moje inne ksi ki 381
Rozdzia 24 Dziesi rzeczy ktoacutere powiniene robi w j zyku VBAi ktoacuterych nie powiniene robi 383
Zawsze deklaruj wszystkie zmienne 383Nigdy nie powiniene myli has a chroni cego kod VBA z bezpiecze stwem aplikacji 384Zawsze staraj si wyczy ci i zoptymalizowa kod aplikacji 384Nigdy nie umieszczaj wszystkiego w jednej procedurze 385Zawsze powiniene rozwa y zastosowanie innego oprogramowania 385Nigdy nie zak adaj e ka dy u ytkownik zezwala na uruchamianie makr 386Zawsze staraj si eksperymentowa z nowymi rozwi zaniami 386Nigdy z goacutery nie zak adaj e Twoacutej kod b dzie poprawnie dzia a z innymi wersjami Excela 386Zawsze pami taj o u ytkownikach Twojej aplikacji 387Nigdy nie zapominaj o tworzeniu kopii zapasowych 387
Skorowidz 389
Kup książkę Poleć książkę
Rozdzia 14
Przyk ady i technikiprogramowania w j zyku VBA
W tym rozdziale poznasz szereg przyk adoacutew technik programowania w j zyku VBA dowiesz si jak mo esz przyspieszy dzia anie kodu VBA w Twojej aplikacji
ierz e nauka programowania jest znacznie szybsza i zdecydowanie bardziejefektywna kiedy pracujemy na konkretnych przyk adach Dobrze opracowany
przyk ad o wiele lepiej obja nia zagadnienie ni najbardziej rozbudowany i szczegoacute owyale teoretyczny opis Poniewa czytasz t ksi k prawdopodobnie zgadzasz si ze mnw tej materii W tym rozdziale znajdziesz szereg przyk adoacutew demonstruj cych u ytecznepraktyczne techniki programowania w j zyku VBA
Przyk ady omawiane w tym rozdziale zosta y podzielone na kilka kategorii Oto one
Praca z zakresami
Modyfikacja ustawie Excela
Praca z wykresami
Przyspieszanie i optymalizacja dzia ania kodu VBA
Niektoacutere z prezentowanych przyk adoacutew b dziesz moacuteg od razu wykorzysta w swoichaplikacjach jednak w wi kszo ci przypadkoacutew b d wymaga y pewnego dostosowaniado Twoich aplikacji
Przetwarzanie zakresoacutew komoacuterekWi kszo zada z jakimi b dziesz si styka programuj c w j zyku VBA b dzie zapewnewymaga a mniejszego b d wi kszego przetwarzania zakresoacutew komoacuterek (aby od wie ysobie wiadomo ci na temat obiektu Range powiniene zajrze do rozdzia u 8) Kiedypracujesz z obiektami Range powiniene pami ta o nast puj cych sprawach
Kod VBA nie musi zaznacza danego zakresu aby go przetwarza
Je eli kod VBA zaznacza wybrany zakres przechowuj cy go skoroszyt musi byaktywny
W
Kup książkę Poleć książkę
218 Cz III Podstawy programowania
Rejestrator makr nie zawsze b dzie w stanie wygenerowa optymalny kod VBABardzo cz sto jednak mo esz za jego pomoc utworzy bazowe makro i potemodpowiednio zmodyfikowa kod tak aby sta si bardziej efektywny
Zazwyczaj bardzo dobrym rozwi zaniem jest nadawanie nazw zakresom komoacuterekwykorzystywanym w kodzie VBA Przyk adowo polecenie Range(Total)jestznacznie lepszym rozwi zaniem ni Range(D45) Je li w tym drugim przypadkupoacute niej wstawisz dodatkowy wiersz powy ej wiersza 45 to eby wszystko dzia a opoprawnie b dziesz musia zmodyfikowa makro tak aby korzysta o z nowegopoprawnego adresu komoacuterki a ta po wykonaniu takiej operacji b dzie mia a innyadres (D46) Aby nada nazw wybranemu zakresowi komoacuterek powiniene przejna kart FORMU Y i wybra polecenie Definiuj nazw znajduj ce si w grupiepolece Nazwy zdefiniowane
Kiedy tworzysz makro ktoacutere b dzie przetwarza o zakres komoacuterek zaznaczonyprzez u ytkownika pami taj e u ytkownik mo e zaznaczy kilka ca ych kolumnczy wierszy W wi kszo ci przypadkoacutew z pewno ci nie b dziesz chcia aby makrow p tli przechodzi o w takiej sytuacji przez wszystkie zaznaczone komoacuterki (w czniez pustymi) co mog oby zaj bardzo wiele czasu Dobre makro powinno odszukai przetwarza tylko komoacuterki ktoacutere nie s puste
Excel pozwala na jednoczesne zaznaczanie wielu zakresoacutew komoacuterek Aby to zrobi powiniene zaznaczy pierwszy zakres komoacuterek potem wcisn i przytrzymaklawisz Ctrl i zaznacza kolejne zakresy komoacuterek przy u yciu myszy Kod Twojejaplikacji powinien by przygotowany na takie sytuacje i podejmowa odpowiednieakcje
Skoroszyty z wybranymi przyk adami omawianymi w tym rozdziale znajdziesz na stronieinternetowej naszej ksi ki
Je eli chcesz samodzielnie wpisywa kod omawianych przyk adoacutew przejd do edytoraVBE naciskaj c kombinacj klawiszy lewyAlt+F11 a nast pnie wstaw nowy modu VBAi wpisz kod prezentowanych procedur Upewnij si e Twoacutej skoroszyt jest poprawnieskonfigurowany Je eli na przyk ad kod danego przyk adu odwo uje si do arkuszyo nazwach Arkusz1 i Arkusz2 upewnij si e takie arkusze istniej w Twoim skoroszycie
Kopiowanie zakresoacutewKopiowanie zakresoacutew komoacuterek mo e mia o pretendowa do miana jednej z najcz ciejwykonywanych operacji w Excelu Kiedy w czysz rejestrator makr i skopiujesz zakreskomoacuterek o adresie A1A5 do zakresu B1B5 otrzymasz nast puj ce makro
Sub CopyRange() Range(A1A5)Select SelectionCopy Range(B1)Select ActiveSheetPaste ApplicationCutCopyMode = FalseEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 219
Zwroacute uwag na ostatnie polecenie Zosta o ono wygenerowane przez naci ni cieklawisza Esc po skopiowaniu zakresu komoacuterek co spowodowa o usuni cie przerywanejlinii reprezentuj cej na arkuszu obramowanie kopiowanego zakresu
Przedstawione makro dzia a poprawnie ale zakresy komoacuterek mo na kopiowa w znaczniebardziej efektywny sposoacuteb Identyczny rezultat mo esz osi gn za pomoc proceduryktoacutera sk ada si z tylko jednego wiersza polecenia i nie zaznacza adnych komoacuterek(dzi ki czemu nie wymaga ustawiania w a ciwo ci CutCopyMode na warto False)
Sub CopyRange2() Range(A1A5)Copy Range(B1)End Sub
Procedura przedstawiona powy ej korzysta z tego e metoda Copy mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe kopiowanego zakresu Informacje o tymznalaz em w pomocy systemowej VBA Powy szy przyk ad doskonale roacutewnie ilustrujefakt e rejestrator makr nie zawsze generuje najbardziej efektywny kod
Kopiowanie zakresu o zmiennej wielko ciW wielu przypadkach konieczne jest skopiowanie zakresu komoacuterek dla ktoacuterego dok adnaliczba wierszy i kolumn okre laj cych jego wielko nie jest z goacutery znana Przyk adowomo esz dysponowa skoroszytem ledz cym tygodniow sprzeda w ktoacuterym liczba wierszyzmienia si ka dego tygodnia po wprowadzeniu nowych danych
Na rysunku 141 przedstawiam przyk ad cz sto spotykanego typu arkusza Znajduj cysi w nim zakres komoacuterek sk ada si z kilku wierszy ktoacuterych liczba zmienia si ka degodnia Poniewa nie wiesz jaki jest rozmiar zakresu w danej chwili musisz utworzykod ktoacutery b dzie dzia a bez u ywania adresu zakresu kopiowanych komoacuterek
Rysunek 141Przyk ad zakre-su ktoacutery mo e
sk ada siz dowolnej
liczby wierszy
Makro przedstawione poni ej ilustruje sposoacuteb kopiowania zakresu komoacuterek z arkuszaArkusz1 do arkusza Arkusz2 (pocz wszy od komoacuterki A1) Makro wykorzystuje w a ciwoCurrentRegion ktoacutera zwraca obiekt Range odpowiadaj cy blokowi komoacuterek otaczaj cychokre lon komoacuterk (w tym przypadku o adresie A1)
Kup książkę Poleć książkę
220 Cz III Podstawy programowania
Sub CopyCurrentRegion() Range(A1)CurrentRegionCopy Sheets(Arkusz2)Select Range(A1)Select ActiveSheetPaste Sheets(Arkusz1)Select ApplicationCutCopyMode = FalseEnd Sub
Zastosowanie w a ciwo ci CurrentRegion jest roacutewnowa ne z przej ciem na kartNARZ DZIA G OacuteWNE i wybraniem polecenia Znajd i zaznaczPrzejd do mdashspecjalnie znajduj cego si w grupie opcji Edytowanie i nast pnie zaznaczeniem opcjiBie cy obszar Aby przekona si jak to dzia a podczas wykonywania tych polecepowiniene u y rejestratora makr Zazwyczaj warto w a ciwo ci CurrentRegionreprezentuje prostok tny blok komoacuterek otoczony przez puste wiersze i kolumny
Oczywi cie mo esz zoptymalizowa kod makra przedstawionego powy ej i niezaznacza obszaru docelowego dla kopiowanych komoacuterek Makro przedstawione poni ejkorzysta z faktu e metoda Copy mo e u ywa argumentu wywo ania reprezentuj cegomiejsce docelowe kopiowanego zakresu
Sub CopyCurrentRegion2() Range(A1)CurrentRegionCopy _ Sheets(Arkusz2)Range(A1)End Sub
Je eli zakres komoacuterek ktoacutery chcesz skopiowa jest tabel (zdefiniowan przy u yciapolecenia WSTAWIANIETabeleTabela) ca e zadanie b dzie jeszcze atwiejsze Ka databela posiada swoj nazw (na przyk ad Tabela1) i automatycznie rozszerza si w miardodawania nowych wierszy
Sub CopyTable() Range(Tabela1)Copy Sheets(Arkusz2)Range(A1)End Sub
Je eli sproacutebujesz wykona procedur przedstawion powy ej przekonasz si e wiersznag oacutewka tabeli nie jest kopiowany poniewa obiekt Tabela1 nie obejmuje tegowiersza Je li chcesz aby wiersz nag oacutewka roacutewnie by kopiowany powiniene zmieniodwo anie do tabeli tak jak to zosta o przedstawione poni ej
Range(Tabela1[All])
Zaznaczanie komoacuterekdo ko ca wiersza lub kolumnyPrawdopodobnie bardzo cz sto u ywasz kombinacji klawiszy takich jak Ctrl+Shift+ czy Ctrl+Shift+ do zaznaczania zakresoacutew sk adaj cych si ze wszystkich komoacuterekod komoacuterki aktywnej a do ko ca kolumny czy wiersza Nie jest wi c chyba zaskoczenieme mo esz napisa makro ktoacutere b dzie zaznacza komoacuterki w podobny sposoacuteb
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 221
Do zaznaczania ca ego bloku komoacuterek mo esz u y w a ciwo ci CurrentRegion Ale copowiniene zrobi je eli chcesz zaznaczy powiedzmy tylko jedn kolumn z tegobloku komoacuterek Na szcz cie VBA pozwala na wykonywanie takich operacji Proceduraktoacuterej kod przedstawiam poni ej zaznacza zakres komoacuterek pocz wszy od bie cejaktywnej komoacuterki w doacute kolumny a do komoacuterki znajduj cej si o jeden wiersz powy ejpierwszej pustej komoacuterki tej kolumny Po zaznaczeniu zakresu mo esz przetwarza gow dowolny sposoacuteb mdash kopiowa komoacuterki przenosi je w inne miejsce arkusza zmieniaformatowanie i tak dalej
Sub SelectDown() Range(ActiveCell ActiveCellEnd(xlDown))SelectEnd Sub
Oczywi cie taki sam obszar mo esz roacutewnie zaznaczy r cznie Aby to zrobi powinienezaznaczy pierwsz komoacuterk nast pnie wcisn i przytrzyma klawisz Shift nacisnklawisz End i wreszcie nacisn klawisz (strza ka w doacute )
W przyk adzie wykorzystuj metod End obiektu ActiveCell ktoacutera zwraca obiekt typuRange Metoda End pobiera jeden argument okre laj cy kierunek w ktoacuterym zostaniewykonane zaznaczenie Argumentami tej metody mo e by dowolna ze sta ychprzedstawionych poni ej
xlUp
xlDown
xlToLeft
xlToRight
Pami taj e zaznaczanie zakresu nie jest potrzebne do jego przetwarzania Makroprzedstawione poni ej zmienia czcionk w komoacuterkach zmiennego zakresu (pojedynczakolumna) na pogrubion bez uprzedniego zaznaczenia zakresu
Sub MakeBold() Range(ActiveCell ActiveCellEnd(xlDown)) _ FontBold = TrueEnd Sub
Zaznaczanie ca ego wiersza lub ca ej kolumnyProcedura przedstawiona poni ej ilustruje sposoacuteb zaznaczania kolumny w ktoacuterej znajdujesi aktywna komoacuterka Makro wykorzystuje w a ciwo EntireColumn ktoacutera zwracaobiekt typu Range reprezentuj cy ca kolumn
Sub SelectColumn() ActiveCellEntireColumnSelectEnd Sub
Jak pewnie si spodziewasz w j zyku VBA dost pna jest roacutewnie w a ciwo EntireRowktoacutera zwraca obiekt typu Range reprezentuj cy ca y wiersz
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
10 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kiedy ignorowa b dy 199Rozpoznawanie okre lonych b doacutew 200
Zamierzony b d 201
Rozdzia 13 Dezynsekcja kodu czyli jak walczy z pluskwami 203Rodzaje pluskiew 203Podstawy entomologii czyli jak zidentyfikowa pluskw 205Metody i techniki walki z pluskwami 205
Przegl danie kodu VBA 206Umieszczanie funkcji MsgBox w kluczowych miejscach kodu 206Umieszczanie polecenia DebugPrint w kluczowych miejscach kodu 208Korzystanie z wbudowanych narz dzi Excela wspomagaj cych odpluskwianie kodu VBA 209
Kilka s oacutew o debuggerze 209Ustawianie punktoacutew przerwa w kodzie programu 209Zastosowanie okna Watch 212Zastosowanie okna Locals 213
Jak zredukowa liczb b doacutew w kodzie programu 215
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 217Przetwarzanie zakresoacutew komoacuterek 217
Kopiowanie zakresoacutew 218Kopiowanie zakresu o zmiennej wielko ci 219Zaznaczanie komoacuterek do ko ca wiersza lub kolumny 220Zaznaczanie ca ego wiersza lub ca ej kolumny 221Przenoszenie zakresoacutew 222Wydajne przetwarzanie komoacuterek zaznaczonego zakresu przy u yciu p tli 222Wydajne przetwarzanie komoacuterek zaznaczonego zakresu przy u yciu p tli (cz II) 224Wprowadzanie warto ci do komoacuterki 225Okre lanie typu zaznaczonego zakresu 226Identyfikowanie zaznacze wielokrotnych 226
Zmiana ustawie Excela 227Zmiana ustawie logicznych (opcje typu Boolean) 227Zmiana innych opcji (typu non-Boolean) 228
Praca z wykresami 229Metoda AddChart kontra metoda AddChart2 230Modyfikowanie typu wykresu 231Przechodzenie w p tli przez elementy kolekcji ChartObjects 232Modyfikowanie w a ciwo ci wykresu 232Zmiana formatowania wykresoacutew 233
Jak przyspieszy dzia anie kodu VBA 234Wy czanie aktualizacji ekranu 234Wy czenie automatycznego przeliczania skoroszytu 235Wy czanie irytuj cych ostrze e 236Upraszczanie odwo a do obiektoacutew 236Deklarowanie typoacutew zmiennych 237Zastosowanie struktury With-End With 238
Kup książkę Poleć książkę
Spis tre ci 11
Cz IV Komunikacja z u ytkownikiem 239Rozdzia 15 Proste okna dialogowe 241
Co zamiast formularzy UserForm 241Funkcja MsgBox 242
Wy wietlanie prostych okien dialogowych 243Pobieranie odpowiedzi z okna dialogowego 243Dostosowywanie wygl du okien dialogowych do w asnych potrzeb 244
Funkcja InputBox 247Sk adnia funkcji InputBox 248Przyk ad zastosowania funkcji InputBox 248Inny rodzaj okna dialogowego InputBox 249
Metoda GetOpenFilename 250Sk adnia metody GetOpenFilename 251Przyk ad zastosowania metody GetOpenFilename 251
Metoda GetSaveAsFilename 253Pobieranie nazwy folderu 254Wy wietlanie wbudowanych okien dialogowych programu Excel 254
Rozdzia 16 Wprowadzenie do formularzy UserForm 257Kiedy u ywa formularzy UserForm 257Tworzenie formularzy UserForm mdash wprowadzenie 258Praca z formularzami UserForm 259
Wstawianie nowego formularza UserForm 259Umieszczanie formantoacutew na formularzu UserForm 260Modyfikacja w a ciwo ci formantoacutew formularza UserForm 261Przegl danie okna Code formularza UserForm 263Wy wietlanie formularzy UserForm 263Pobieranie i wykorzystywanie informacji z formularzy UserForm 264
Przyk ad tworzenia formularza UserForm 264Tworzenie formularza UserForm 265Dodawanie przyciskoacutew polece (formanty CommandButton) 265Dodawanie przyciskoacutew opcji (formanty OptionButton) 267Dodawanie procedur obs ugi zdarze 268Tworzenie makra ktoacutere wy wietla formularz na ekranie 270Udost pnianie makra u ytkownikowi 271Testowanie dzia ania makra 272
Rozdzia 17 Praca z formantami formularza UserForm 275Rozpoczynamy prac z formantami formularzy UserForm 275
Dodawanie formantoacutew 276Wprowadzenie do w a ciwo ci formantoacutew 277
Formanty okien dialogowych mdash szczegoacute y 278Formant CheckBox (pole wyboru) 279Formant ComboBox (pole kombi) 280Formant CommandButton (przycisk polecenia) 281Formant Frame (pole grupy) 281Formant Image (pole obrazu) 282
Kup książkę Poleć książkę
12 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Formant Label (pole etykiety) 283Formant ListBox (pole listy) 283Formant MultiPage 284Formant OptionButton (przycisk opcji) 285Formant RefEdit (pole zakresu) 286Formant ScrollBar (pasek przewijania) 286Formant SpinButton (pokr t o) 287Formant TabStrip (pole karty) 288Formant TextBox (pole tekstowe) 288Formant ToggleButton (przycisk prze cznika) 289
Praca z formantami w oknach dialogowych 289Zmiana rozmiaroacutew i przenoszenie formantoacutew w inne miejsce 289Rozmieszczanie i wyroacutewnywanie po o enia formantoacutew w oknie dialogowym 290Obs uga u ytkownikoacutew preferuj cych korzystanie z klawiatury 291Testowanie formularzy UserForm 293
Estetyka okien dialogowych 293
Rozdzia 18 Techniki pracy z formularzami UserForm 295Zastosowanie w asnych okien dialogowych 295Przyk adowy formularz UserForm 296
Tworzenie okna dialogowego 296Tworzenie kodu procedury wy wietlaj cej okno dialogowe 298Udost pnianie makra u ytkownikowi 299Testowanie okna dialogowego 299Dodawanie procedur obs ugi zdarze 300Sprawdzanie poprawno ci danych 302Teraz okno dialogowe dzia a tak jak powinno 302
Wi cej przyk adoacutew formularzy UserForm 302Zastosowanie formantoacutew ListBox 303Zaznaczanie zakresoacutew 307Praca z wieloma grupami formantoacutew OptionButton 309Zastosowanie formantoacutew SpinButton oraz TextBox 310Wykorzystywanie formularza UserForm jako wska nika post pu zadania 312Tworzenie niemodalnych okien dialogowych z wieloma kartami 315Wy wietlanie wykresoacutew na formularzach UserForm 317
Lista kontrolna tworzenia i testowania okien dialogowych 318
Rozdzia 19 Udost pnianie makr z poziomu interfejsu u ytkownika 321Dostosowywanie Wst ki 321
R czne dopasowywanie Wst ki do w asnych potrzeb 322Dodawanie do Wst ki przycisku w asnego makra 324Dostosowywanie Wst ki za pomoc kodu XML 324
Dostosowywanie menu podr cznego 329Rodzaje obiektoacutew CommandBar 329Wy wietlanie wszystkich menu podr cznych 329Odwo ania do elementoacutew kolekcji CommandBars 330Odwo ania do formantoacutew obiektu CommandBar 331W a ciwo ci formantoacutew obiektu CommandBar 332
Kup książkę Poleć książkę
Spis tre ci 13
Przyk ady zastosowania VBA do modyfikacji menu podr cznego 334Resetowanie wszystkich wbudowanych menu podr cznych 334Dodawanie nowego elementu do menu podr cznego Cell 335Wy czanie menu podr cznego 337
Tworzenie w asnych paskoacutew narz dzi 338
Cz V Od teorii do praktyki 341Rozdzia 20 Jak tworzy w asne funkcje arkuszowe i jak prze y aby o tym opowiedzie 343
Dlaczego tworzymy w asne funkcje 343Podstawowe informacje o funkcjach VBA 344Tworzenie funkcji 345Praca z argumentami funkcji 345Przyk ady funkcji 346
Funkcje bezargumentowe 346Funkcje jednoargumentowe 346Funkcje z dwoma argumentami 348Funkcje pobieraj ce zakres jako argument 349Funkcje z argumentami opcjonalnymi 351
Funkcje opakowuj ce 353Funkcja NumberFormat 353Funkcja ExtractElement 354Funkcja SayIt 354Funkcja IsLike 355
Funkcje zwracaj ce tablice 355Zwracanie tablicy zawieraj cej nazwy miesi cy 355Zwracanie posortowanej listy 356
Okno dialogowe Wstawianie funkcji 358Wy wietlanie opisoacutew funkcji 358Opisy argumentoacutew 360
Rozdzia 21 Tworzenie dodatkoacutew 361No dobrzehellip czym zatem s dodatki 361Po co tworzy si dodatki 362Praca z dodatkami 363Podstawy tworzenia dodatkoacutew 364Tworzymy przyk adowy dodatek 365
Konfiguracja skoroszytu 365Testowanie skoroszytu 367Tworzenie opisoacutew dodatku 368Ochrona kodu VBA 369Tworzenie dodatku 369Otwieranie dodatku 369Dystrybucja dodatkoacutew 370Modyfikowanie dodatkoacutew 371
Kup książkę Poleć książkę
14 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Cz VI Dekalogi 373Rozdzia 22 Dziesi pyta na temat VBA (wraz z odpowiedziami) 375
Rozdzia 23 (Prawie) dziesi roacutede informacji na temat Excela 379System pomocy j zyka VBA 379Wsparcie techniczne firmy Microsoft 380Inne strony internetowe 380Blogi po wi cone Excelowi 380Google 381Bing 381Lokalne grupy u ytkownikoacutew 381Moje inne ksi ki 381
Rozdzia 24 Dziesi rzeczy ktoacutere powiniene robi w j zyku VBAi ktoacuterych nie powiniene robi 383
Zawsze deklaruj wszystkie zmienne 383Nigdy nie powiniene myli has a chroni cego kod VBA z bezpiecze stwem aplikacji 384Zawsze staraj si wyczy ci i zoptymalizowa kod aplikacji 384Nigdy nie umieszczaj wszystkiego w jednej procedurze 385Zawsze powiniene rozwa y zastosowanie innego oprogramowania 385Nigdy nie zak adaj e ka dy u ytkownik zezwala na uruchamianie makr 386Zawsze staraj si eksperymentowa z nowymi rozwi zaniami 386Nigdy z goacutery nie zak adaj e Twoacutej kod b dzie poprawnie dzia a z innymi wersjami Excela 386Zawsze pami taj o u ytkownikach Twojej aplikacji 387Nigdy nie zapominaj o tworzeniu kopii zapasowych 387
Skorowidz 389
Kup książkę Poleć książkę
Rozdzia 14
Przyk ady i technikiprogramowania w j zyku VBA
W tym rozdziale poznasz szereg przyk adoacutew technik programowania w j zyku VBA dowiesz si jak mo esz przyspieszy dzia anie kodu VBA w Twojej aplikacji
ierz e nauka programowania jest znacznie szybsza i zdecydowanie bardziejefektywna kiedy pracujemy na konkretnych przyk adach Dobrze opracowany
przyk ad o wiele lepiej obja nia zagadnienie ni najbardziej rozbudowany i szczegoacute owyale teoretyczny opis Poniewa czytasz t ksi k prawdopodobnie zgadzasz si ze mnw tej materii W tym rozdziale znajdziesz szereg przyk adoacutew demonstruj cych u ytecznepraktyczne techniki programowania w j zyku VBA
Przyk ady omawiane w tym rozdziale zosta y podzielone na kilka kategorii Oto one
Praca z zakresami
Modyfikacja ustawie Excela
Praca z wykresami
Przyspieszanie i optymalizacja dzia ania kodu VBA
Niektoacutere z prezentowanych przyk adoacutew b dziesz moacuteg od razu wykorzysta w swoichaplikacjach jednak w wi kszo ci przypadkoacutew b d wymaga y pewnego dostosowaniado Twoich aplikacji
Przetwarzanie zakresoacutew komoacuterekWi kszo zada z jakimi b dziesz si styka programuj c w j zyku VBA b dzie zapewnewymaga a mniejszego b d wi kszego przetwarzania zakresoacutew komoacuterek (aby od wie ysobie wiadomo ci na temat obiektu Range powiniene zajrze do rozdzia u 8) Kiedypracujesz z obiektami Range powiniene pami ta o nast puj cych sprawach
Kod VBA nie musi zaznacza danego zakresu aby go przetwarza
Je eli kod VBA zaznacza wybrany zakres przechowuj cy go skoroszyt musi byaktywny
W
Kup książkę Poleć książkę
218 Cz III Podstawy programowania
Rejestrator makr nie zawsze b dzie w stanie wygenerowa optymalny kod VBABardzo cz sto jednak mo esz za jego pomoc utworzy bazowe makro i potemodpowiednio zmodyfikowa kod tak aby sta si bardziej efektywny
Zazwyczaj bardzo dobrym rozwi zaniem jest nadawanie nazw zakresom komoacuterekwykorzystywanym w kodzie VBA Przyk adowo polecenie Range(Total)jestznacznie lepszym rozwi zaniem ni Range(D45) Je li w tym drugim przypadkupoacute niej wstawisz dodatkowy wiersz powy ej wiersza 45 to eby wszystko dzia a opoprawnie b dziesz musia zmodyfikowa makro tak aby korzysta o z nowegopoprawnego adresu komoacuterki a ta po wykonaniu takiej operacji b dzie mia a innyadres (D46) Aby nada nazw wybranemu zakresowi komoacuterek powiniene przejna kart FORMU Y i wybra polecenie Definiuj nazw znajduj ce si w grupiepolece Nazwy zdefiniowane
Kiedy tworzysz makro ktoacutere b dzie przetwarza o zakres komoacuterek zaznaczonyprzez u ytkownika pami taj e u ytkownik mo e zaznaczy kilka ca ych kolumnczy wierszy W wi kszo ci przypadkoacutew z pewno ci nie b dziesz chcia aby makrow p tli przechodzi o w takiej sytuacji przez wszystkie zaznaczone komoacuterki (w czniez pustymi) co mog oby zaj bardzo wiele czasu Dobre makro powinno odszukai przetwarza tylko komoacuterki ktoacutere nie s puste
Excel pozwala na jednoczesne zaznaczanie wielu zakresoacutew komoacuterek Aby to zrobi powiniene zaznaczy pierwszy zakres komoacuterek potem wcisn i przytrzymaklawisz Ctrl i zaznacza kolejne zakresy komoacuterek przy u yciu myszy Kod Twojejaplikacji powinien by przygotowany na takie sytuacje i podejmowa odpowiednieakcje
Skoroszyty z wybranymi przyk adami omawianymi w tym rozdziale znajdziesz na stronieinternetowej naszej ksi ki
Je eli chcesz samodzielnie wpisywa kod omawianych przyk adoacutew przejd do edytoraVBE naciskaj c kombinacj klawiszy lewyAlt+F11 a nast pnie wstaw nowy modu VBAi wpisz kod prezentowanych procedur Upewnij si e Twoacutej skoroszyt jest poprawnieskonfigurowany Je eli na przyk ad kod danego przyk adu odwo uje si do arkuszyo nazwach Arkusz1 i Arkusz2 upewnij si e takie arkusze istniej w Twoim skoroszycie
Kopiowanie zakresoacutewKopiowanie zakresoacutew komoacuterek mo e mia o pretendowa do miana jednej z najcz ciejwykonywanych operacji w Excelu Kiedy w czysz rejestrator makr i skopiujesz zakreskomoacuterek o adresie A1A5 do zakresu B1B5 otrzymasz nast puj ce makro
Sub CopyRange() Range(A1A5)Select SelectionCopy Range(B1)Select ActiveSheetPaste ApplicationCutCopyMode = FalseEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 219
Zwroacute uwag na ostatnie polecenie Zosta o ono wygenerowane przez naci ni cieklawisza Esc po skopiowaniu zakresu komoacuterek co spowodowa o usuni cie przerywanejlinii reprezentuj cej na arkuszu obramowanie kopiowanego zakresu
Przedstawione makro dzia a poprawnie ale zakresy komoacuterek mo na kopiowa w znaczniebardziej efektywny sposoacuteb Identyczny rezultat mo esz osi gn za pomoc proceduryktoacutera sk ada si z tylko jednego wiersza polecenia i nie zaznacza adnych komoacuterek(dzi ki czemu nie wymaga ustawiania w a ciwo ci CutCopyMode na warto False)
Sub CopyRange2() Range(A1A5)Copy Range(B1)End Sub
Procedura przedstawiona powy ej korzysta z tego e metoda Copy mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe kopiowanego zakresu Informacje o tymznalaz em w pomocy systemowej VBA Powy szy przyk ad doskonale roacutewnie ilustrujefakt e rejestrator makr nie zawsze generuje najbardziej efektywny kod
Kopiowanie zakresu o zmiennej wielko ciW wielu przypadkach konieczne jest skopiowanie zakresu komoacuterek dla ktoacuterego dok adnaliczba wierszy i kolumn okre laj cych jego wielko nie jest z goacutery znana Przyk adowomo esz dysponowa skoroszytem ledz cym tygodniow sprzeda w ktoacuterym liczba wierszyzmienia si ka dego tygodnia po wprowadzeniu nowych danych
Na rysunku 141 przedstawiam przyk ad cz sto spotykanego typu arkusza Znajduj cysi w nim zakres komoacuterek sk ada si z kilku wierszy ktoacuterych liczba zmienia si ka degodnia Poniewa nie wiesz jaki jest rozmiar zakresu w danej chwili musisz utworzykod ktoacutery b dzie dzia a bez u ywania adresu zakresu kopiowanych komoacuterek
Rysunek 141Przyk ad zakre-su ktoacutery mo e
sk ada siz dowolnej
liczby wierszy
Makro przedstawione poni ej ilustruje sposoacuteb kopiowania zakresu komoacuterek z arkuszaArkusz1 do arkusza Arkusz2 (pocz wszy od komoacuterki A1) Makro wykorzystuje w a ciwoCurrentRegion ktoacutera zwraca obiekt Range odpowiadaj cy blokowi komoacuterek otaczaj cychokre lon komoacuterk (w tym przypadku o adresie A1)
Kup książkę Poleć książkę
220 Cz III Podstawy programowania
Sub CopyCurrentRegion() Range(A1)CurrentRegionCopy Sheets(Arkusz2)Select Range(A1)Select ActiveSheetPaste Sheets(Arkusz1)Select ApplicationCutCopyMode = FalseEnd Sub
Zastosowanie w a ciwo ci CurrentRegion jest roacutewnowa ne z przej ciem na kartNARZ DZIA G OacuteWNE i wybraniem polecenia Znajd i zaznaczPrzejd do mdashspecjalnie znajduj cego si w grupie opcji Edytowanie i nast pnie zaznaczeniem opcjiBie cy obszar Aby przekona si jak to dzia a podczas wykonywania tych polecepowiniene u y rejestratora makr Zazwyczaj warto w a ciwo ci CurrentRegionreprezentuje prostok tny blok komoacuterek otoczony przez puste wiersze i kolumny
Oczywi cie mo esz zoptymalizowa kod makra przedstawionego powy ej i niezaznacza obszaru docelowego dla kopiowanych komoacuterek Makro przedstawione poni ejkorzysta z faktu e metoda Copy mo e u ywa argumentu wywo ania reprezentuj cegomiejsce docelowe kopiowanego zakresu
Sub CopyCurrentRegion2() Range(A1)CurrentRegionCopy _ Sheets(Arkusz2)Range(A1)End Sub
Je eli zakres komoacuterek ktoacutery chcesz skopiowa jest tabel (zdefiniowan przy u yciapolecenia WSTAWIANIETabeleTabela) ca e zadanie b dzie jeszcze atwiejsze Ka databela posiada swoj nazw (na przyk ad Tabela1) i automatycznie rozszerza si w miardodawania nowych wierszy
Sub CopyTable() Range(Tabela1)Copy Sheets(Arkusz2)Range(A1)End Sub
Je eli sproacutebujesz wykona procedur przedstawion powy ej przekonasz si e wiersznag oacutewka tabeli nie jest kopiowany poniewa obiekt Tabela1 nie obejmuje tegowiersza Je li chcesz aby wiersz nag oacutewka roacutewnie by kopiowany powiniene zmieniodwo anie do tabeli tak jak to zosta o przedstawione poni ej
Range(Tabela1[All])
Zaznaczanie komoacuterekdo ko ca wiersza lub kolumnyPrawdopodobnie bardzo cz sto u ywasz kombinacji klawiszy takich jak Ctrl+Shift+ czy Ctrl+Shift+ do zaznaczania zakresoacutew sk adaj cych si ze wszystkich komoacuterekod komoacuterki aktywnej a do ko ca kolumny czy wiersza Nie jest wi c chyba zaskoczenieme mo esz napisa makro ktoacutere b dzie zaznacza komoacuterki w podobny sposoacuteb
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 221
Do zaznaczania ca ego bloku komoacuterek mo esz u y w a ciwo ci CurrentRegion Ale copowiniene zrobi je eli chcesz zaznaczy powiedzmy tylko jedn kolumn z tegobloku komoacuterek Na szcz cie VBA pozwala na wykonywanie takich operacji Proceduraktoacuterej kod przedstawiam poni ej zaznacza zakres komoacuterek pocz wszy od bie cejaktywnej komoacuterki w doacute kolumny a do komoacuterki znajduj cej si o jeden wiersz powy ejpierwszej pustej komoacuterki tej kolumny Po zaznaczeniu zakresu mo esz przetwarza gow dowolny sposoacuteb mdash kopiowa komoacuterki przenosi je w inne miejsce arkusza zmieniaformatowanie i tak dalej
Sub SelectDown() Range(ActiveCell ActiveCellEnd(xlDown))SelectEnd Sub
Oczywi cie taki sam obszar mo esz roacutewnie zaznaczy r cznie Aby to zrobi powinienezaznaczy pierwsz komoacuterk nast pnie wcisn i przytrzyma klawisz Shift nacisnklawisz End i wreszcie nacisn klawisz (strza ka w doacute )
W przyk adzie wykorzystuj metod End obiektu ActiveCell ktoacutera zwraca obiekt typuRange Metoda End pobiera jeden argument okre laj cy kierunek w ktoacuterym zostaniewykonane zaznaczenie Argumentami tej metody mo e by dowolna ze sta ychprzedstawionych poni ej
xlUp
xlDown
xlToLeft
xlToRight
Pami taj e zaznaczanie zakresu nie jest potrzebne do jego przetwarzania Makroprzedstawione poni ej zmienia czcionk w komoacuterkach zmiennego zakresu (pojedynczakolumna) na pogrubion bez uprzedniego zaznaczenia zakresu
Sub MakeBold() Range(ActiveCell ActiveCellEnd(xlDown)) _ FontBold = TrueEnd Sub
Zaznaczanie ca ego wiersza lub ca ej kolumnyProcedura przedstawiona poni ej ilustruje sposoacuteb zaznaczania kolumny w ktoacuterej znajdujesi aktywna komoacuterka Makro wykorzystuje w a ciwo EntireColumn ktoacutera zwracaobiekt typu Range reprezentuj cy ca kolumn
Sub SelectColumn() ActiveCellEntireColumnSelectEnd Sub
Jak pewnie si spodziewasz w j zyku VBA dost pna jest roacutewnie w a ciwo EntireRowktoacutera zwraca obiekt typu Range reprezentuj cy ca y wiersz
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Spis tre ci 11
Cz IV Komunikacja z u ytkownikiem 239Rozdzia 15 Proste okna dialogowe 241
Co zamiast formularzy UserForm 241Funkcja MsgBox 242
Wy wietlanie prostych okien dialogowych 243Pobieranie odpowiedzi z okna dialogowego 243Dostosowywanie wygl du okien dialogowych do w asnych potrzeb 244
Funkcja InputBox 247Sk adnia funkcji InputBox 248Przyk ad zastosowania funkcji InputBox 248Inny rodzaj okna dialogowego InputBox 249
Metoda GetOpenFilename 250Sk adnia metody GetOpenFilename 251Przyk ad zastosowania metody GetOpenFilename 251
Metoda GetSaveAsFilename 253Pobieranie nazwy folderu 254Wy wietlanie wbudowanych okien dialogowych programu Excel 254
Rozdzia 16 Wprowadzenie do formularzy UserForm 257Kiedy u ywa formularzy UserForm 257Tworzenie formularzy UserForm mdash wprowadzenie 258Praca z formularzami UserForm 259
Wstawianie nowego formularza UserForm 259Umieszczanie formantoacutew na formularzu UserForm 260Modyfikacja w a ciwo ci formantoacutew formularza UserForm 261Przegl danie okna Code formularza UserForm 263Wy wietlanie formularzy UserForm 263Pobieranie i wykorzystywanie informacji z formularzy UserForm 264
Przyk ad tworzenia formularza UserForm 264Tworzenie formularza UserForm 265Dodawanie przyciskoacutew polece (formanty CommandButton) 265Dodawanie przyciskoacutew opcji (formanty OptionButton) 267Dodawanie procedur obs ugi zdarze 268Tworzenie makra ktoacutere wy wietla formularz na ekranie 270Udost pnianie makra u ytkownikowi 271Testowanie dzia ania makra 272
Rozdzia 17 Praca z formantami formularza UserForm 275Rozpoczynamy prac z formantami formularzy UserForm 275
Dodawanie formantoacutew 276Wprowadzenie do w a ciwo ci formantoacutew 277
Formanty okien dialogowych mdash szczegoacute y 278Formant CheckBox (pole wyboru) 279Formant ComboBox (pole kombi) 280Formant CommandButton (przycisk polecenia) 281Formant Frame (pole grupy) 281Formant Image (pole obrazu) 282
Kup książkę Poleć książkę
12 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Formant Label (pole etykiety) 283Formant ListBox (pole listy) 283Formant MultiPage 284Formant OptionButton (przycisk opcji) 285Formant RefEdit (pole zakresu) 286Formant ScrollBar (pasek przewijania) 286Formant SpinButton (pokr t o) 287Formant TabStrip (pole karty) 288Formant TextBox (pole tekstowe) 288Formant ToggleButton (przycisk prze cznika) 289
Praca z formantami w oknach dialogowych 289Zmiana rozmiaroacutew i przenoszenie formantoacutew w inne miejsce 289Rozmieszczanie i wyroacutewnywanie po o enia formantoacutew w oknie dialogowym 290Obs uga u ytkownikoacutew preferuj cych korzystanie z klawiatury 291Testowanie formularzy UserForm 293
Estetyka okien dialogowych 293
Rozdzia 18 Techniki pracy z formularzami UserForm 295Zastosowanie w asnych okien dialogowych 295Przyk adowy formularz UserForm 296
Tworzenie okna dialogowego 296Tworzenie kodu procedury wy wietlaj cej okno dialogowe 298Udost pnianie makra u ytkownikowi 299Testowanie okna dialogowego 299Dodawanie procedur obs ugi zdarze 300Sprawdzanie poprawno ci danych 302Teraz okno dialogowe dzia a tak jak powinno 302
Wi cej przyk adoacutew formularzy UserForm 302Zastosowanie formantoacutew ListBox 303Zaznaczanie zakresoacutew 307Praca z wieloma grupami formantoacutew OptionButton 309Zastosowanie formantoacutew SpinButton oraz TextBox 310Wykorzystywanie formularza UserForm jako wska nika post pu zadania 312Tworzenie niemodalnych okien dialogowych z wieloma kartami 315Wy wietlanie wykresoacutew na formularzach UserForm 317
Lista kontrolna tworzenia i testowania okien dialogowych 318
Rozdzia 19 Udost pnianie makr z poziomu interfejsu u ytkownika 321Dostosowywanie Wst ki 321
R czne dopasowywanie Wst ki do w asnych potrzeb 322Dodawanie do Wst ki przycisku w asnego makra 324Dostosowywanie Wst ki za pomoc kodu XML 324
Dostosowywanie menu podr cznego 329Rodzaje obiektoacutew CommandBar 329Wy wietlanie wszystkich menu podr cznych 329Odwo ania do elementoacutew kolekcji CommandBars 330Odwo ania do formantoacutew obiektu CommandBar 331W a ciwo ci formantoacutew obiektu CommandBar 332
Kup książkę Poleć książkę
Spis tre ci 13
Przyk ady zastosowania VBA do modyfikacji menu podr cznego 334Resetowanie wszystkich wbudowanych menu podr cznych 334Dodawanie nowego elementu do menu podr cznego Cell 335Wy czanie menu podr cznego 337
Tworzenie w asnych paskoacutew narz dzi 338
Cz V Od teorii do praktyki 341Rozdzia 20 Jak tworzy w asne funkcje arkuszowe i jak prze y aby o tym opowiedzie 343
Dlaczego tworzymy w asne funkcje 343Podstawowe informacje o funkcjach VBA 344Tworzenie funkcji 345Praca z argumentami funkcji 345Przyk ady funkcji 346
Funkcje bezargumentowe 346Funkcje jednoargumentowe 346Funkcje z dwoma argumentami 348Funkcje pobieraj ce zakres jako argument 349Funkcje z argumentami opcjonalnymi 351
Funkcje opakowuj ce 353Funkcja NumberFormat 353Funkcja ExtractElement 354Funkcja SayIt 354Funkcja IsLike 355
Funkcje zwracaj ce tablice 355Zwracanie tablicy zawieraj cej nazwy miesi cy 355Zwracanie posortowanej listy 356
Okno dialogowe Wstawianie funkcji 358Wy wietlanie opisoacutew funkcji 358Opisy argumentoacutew 360
Rozdzia 21 Tworzenie dodatkoacutew 361No dobrzehellip czym zatem s dodatki 361Po co tworzy si dodatki 362Praca z dodatkami 363Podstawy tworzenia dodatkoacutew 364Tworzymy przyk adowy dodatek 365
Konfiguracja skoroszytu 365Testowanie skoroszytu 367Tworzenie opisoacutew dodatku 368Ochrona kodu VBA 369Tworzenie dodatku 369Otwieranie dodatku 369Dystrybucja dodatkoacutew 370Modyfikowanie dodatkoacutew 371
Kup książkę Poleć książkę
14 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Cz VI Dekalogi 373Rozdzia 22 Dziesi pyta na temat VBA (wraz z odpowiedziami) 375
Rozdzia 23 (Prawie) dziesi roacutede informacji na temat Excela 379System pomocy j zyka VBA 379Wsparcie techniczne firmy Microsoft 380Inne strony internetowe 380Blogi po wi cone Excelowi 380Google 381Bing 381Lokalne grupy u ytkownikoacutew 381Moje inne ksi ki 381
Rozdzia 24 Dziesi rzeczy ktoacutere powiniene robi w j zyku VBAi ktoacuterych nie powiniene robi 383
Zawsze deklaruj wszystkie zmienne 383Nigdy nie powiniene myli has a chroni cego kod VBA z bezpiecze stwem aplikacji 384Zawsze staraj si wyczy ci i zoptymalizowa kod aplikacji 384Nigdy nie umieszczaj wszystkiego w jednej procedurze 385Zawsze powiniene rozwa y zastosowanie innego oprogramowania 385Nigdy nie zak adaj e ka dy u ytkownik zezwala na uruchamianie makr 386Zawsze staraj si eksperymentowa z nowymi rozwi zaniami 386Nigdy z goacutery nie zak adaj e Twoacutej kod b dzie poprawnie dzia a z innymi wersjami Excela 386Zawsze pami taj o u ytkownikach Twojej aplikacji 387Nigdy nie zapominaj o tworzeniu kopii zapasowych 387
Skorowidz 389
Kup książkę Poleć książkę
Rozdzia 14
Przyk ady i technikiprogramowania w j zyku VBA
W tym rozdziale poznasz szereg przyk adoacutew technik programowania w j zyku VBA dowiesz si jak mo esz przyspieszy dzia anie kodu VBA w Twojej aplikacji
ierz e nauka programowania jest znacznie szybsza i zdecydowanie bardziejefektywna kiedy pracujemy na konkretnych przyk adach Dobrze opracowany
przyk ad o wiele lepiej obja nia zagadnienie ni najbardziej rozbudowany i szczegoacute owyale teoretyczny opis Poniewa czytasz t ksi k prawdopodobnie zgadzasz si ze mnw tej materii W tym rozdziale znajdziesz szereg przyk adoacutew demonstruj cych u ytecznepraktyczne techniki programowania w j zyku VBA
Przyk ady omawiane w tym rozdziale zosta y podzielone na kilka kategorii Oto one
Praca z zakresami
Modyfikacja ustawie Excela
Praca z wykresami
Przyspieszanie i optymalizacja dzia ania kodu VBA
Niektoacutere z prezentowanych przyk adoacutew b dziesz moacuteg od razu wykorzysta w swoichaplikacjach jednak w wi kszo ci przypadkoacutew b d wymaga y pewnego dostosowaniado Twoich aplikacji
Przetwarzanie zakresoacutew komoacuterekWi kszo zada z jakimi b dziesz si styka programuj c w j zyku VBA b dzie zapewnewymaga a mniejszego b d wi kszego przetwarzania zakresoacutew komoacuterek (aby od wie ysobie wiadomo ci na temat obiektu Range powiniene zajrze do rozdzia u 8) Kiedypracujesz z obiektami Range powiniene pami ta o nast puj cych sprawach
Kod VBA nie musi zaznacza danego zakresu aby go przetwarza
Je eli kod VBA zaznacza wybrany zakres przechowuj cy go skoroszyt musi byaktywny
W
Kup książkę Poleć książkę
218 Cz III Podstawy programowania
Rejestrator makr nie zawsze b dzie w stanie wygenerowa optymalny kod VBABardzo cz sto jednak mo esz za jego pomoc utworzy bazowe makro i potemodpowiednio zmodyfikowa kod tak aby sta si bardziej efektywny
Zazwyczaj bardzo dobrym rozwi zaniem jest nadawanie nazw zakresom komoacuterekwykorzystywanym w kodzie VBA Przyk adowo polecenie Range(Total)jestznacznie lepszym rozwi zaniem ni Range(D45) Je li w tym drugim przypadkupoacute niej wstawisz dodatkowy wiersz powy ej wiersza 45 to eby wszystko dzia a opoprawnie b dziesz musia zmodyfikowa makro tak aby korzysta o z nowegopoprawnego adresu komoacuterki a ta po wykonaniu takiej operacji b dzie mia a innyadres (D46) Aby nada nazw wybranemu zakresowi komoacuterek powiniene przejna kart FORMU Y i wybra polecenie Definiuj nazw znajduj ce si w grupiepolece Nazwy zdefiniowane
Kiedy tworzysz makro ktoacutere b dzie przetwarza o zakres komoacuterek zaznaczonyprzez u ytkownika pami taj e u ytkownik mo e zaznaczy kilka ca ych kolumnczy wierszy W wi kszo ci przypadkoacutew z pewno ci nie b dziesz chcia aby makrow p tli przechodzi o w takiej sytuacji przez wszystkie zaznaczone komoacuterki (w czniez pustymi) co mog oby zaj bardzo wiele czasu Dobre makro powinno odszukai przetwarza tylko komoacuterki ktoacutere nie s puste
Excel pozwala na jednoczesne zaznaczanie wielu zakresoacutew komoacuterek Aby to zrobi powiniene zaznaczy pierwszy zakres komoacuterek potem wcisn i przytrzymaklawisz Ctrl i zaznacza kolejne zakresy komoacuterek przy u yciu myszy Kod Twojejaplikacji powinien by przygotowany na takie sytuacje i podejmowa odpowiednieakcje
Skoroszyty z wybranymi przyk adami omawianymi w tym rozdziale znajdziesz na stronieinternetowej naszej ksi ki
Je eli chcesz samodzielnie wpisywa kod omawianych przyk adoacutew przejd do edytoraVBE naciskaj c kombinacj klawiszy lewyAlt+F11 a nast pnie wstaw nowy modu VBAi wpisz kod prezentowanych procedur Upewnij si e Twoacutej skoroszyt jest poprawnieskonfigurowany Je eli na przyk ad kod danego przyk adu odwo uje si do arkuszyo nazwach Arkusz1 i Arkusz2 upewnij si e takie arkusze istniej w Twoim skoroszycie
Kopiowanie zakresoacutewKopiowanie zakresoacutew komoacuterek mo e mia o pretendowa do miana jednej z najcz ciejwykonywanych operacji w Excelu Kiedy w czysz rejestrator makr i skopiujesz zakreskomoacuterek o adresie A1A5 do zakresu B1B5 otrzymasz nast puj ce makro
Sub CopyRange() Range(A1A5)Select SelectionCopy Range(B1)Select ActiveSheetPaste ApplicationCutCopyMode = FalseEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 219
Zwroacute uwag na ostatnie polecenie Zosta o ono wygenerowane przez naci ni cieklawisza Esc po skopiowaniu zakresu komoacuterek co spowodowa o usuni cie przerywanejlinii reprezentuj cej na arkuszu obramowanie kopiowanego zakresu
Przedstawione makro dzia a poprawnie ale zakresy komoacuterek mo na kopiowa w znaczniebardziej efektywny sposoacuteb Identyczny rezultat mo esz osi gn za pomoc proceduryktoacutera sk ada si z tylko jednego wiersza polecenia i nie zaznacza adnych komoacuterek(dzi ki czemu nie wymaga ustawiania w a ciwo ci CutCopyMode na warto False)
Sub CopyRange2() Range(A1A5)Copy Range(B1)End Sub
Procedura przedstawiona powy ej korzysta z tego e metoda Copy mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe kopiowanego zakresu Informacje o tymznalaz em w pomocy systemowej VBA Powy szy przyk ad doskonale roacutewnie ilustrujefakt e rejestrator makr nie zawsze generuje najbardziej efektywny kod
Kopiowanie zakresu o zmiennej wielko ciW wielu przypadkach konieczne jest skopiowanie zakresu komoacuterek dla ktoacuterego dok adnaliczba wierszy i kolumn okre laj cych jego wielko nie jest z goacutery znana Przyk adowomo esz dysponowa skoroszytem ledz cym tygodniow sprzeda w ktoacuterym liczba wierszyzmienia si ka dego tygodnia po wprowadzeniu nowych danych
Na rysunku 141 przedstawiam przyk ad cz sto spotykanego typu arkusza Znajduj cysi w nim zakres komoacuterek sk ada si z kilku wierszy ktoacuterych liczba zmienia si ka degodnia Poniewa nie wiesz jaki jest rozmiar zakresu w danej chwili musisz utworzykod ktoacutery b dzie dzia a bez u ywania adresu zakresu kopiowanych komoacuterek
Rysunek 141Przyk ad zakre-su ktoacutery mo e
sk ada siz dowolnej
liczby wierszy
Makro przedstawione poni ej ilustruje sposoacuteb kopiowania zakresu komoacuterek z arkuszaArkusz1 do arkusza Arkusz2 (pocz wszy od komoacuterki A1) Makro wykorzystuje w a ciwoCurrentRegion ktoacutera zwraca obiekt Range odpowiadaj cy blokowi komoacuterek otaczaj cychokre lon komoacuterk (w tym przypadku o adresie A1)
Kup książkę Poleć książkę
220 Cz III Podstawy programowania
Sub CopyCurrentRegion() Range(A1)CurrentRegionCopy Sheets(Arkusz2)Select Range(A1)Select ActiveSheetPaste Sheets(Arkusz1)Select ApplicationCutCopyMode = FalseEnd Sub
Zastosowanie w a ciwo ci CurrentRegion jest roacutewnowa ne z przej ciem na kartNARZ DZIA G OacuteWNE i wybraniem polecenia Znajd i zaznaczPrzejd do mdashspecjalnie znajduj cego si w grupie opcji Edytowanie i nast pnie zaznaczeniem opcjiBie cy obszar Aby przekona si jak to dzia a podczas wykonywania tych polecepowiniene u y rejestratora makr Zazwyczaj warto w a ciwo ci CurrentRegionreprezentuje prostok tny blok komoacuterek otoczony przez puste wiersze i kolumny
Oczywi cie mo esz zoptymalizowa kod makra przedstawionego powy ej i niezaznacza obszaru docelowego dla kopiowanych komoacuterek Makro przedstawione poni ejkorzysta z faktu e metoda Copy mo e u ywa argumentu wywo ania reprezentuj cegomiejsce docelowe kopiowanego zakresu
Sub CopyCurrentRegion2() Range(A1)CurrentRegionCopy _ Sheets(Arkusz2)Range(A1)End Sub
Je eli zakres komoacuterek ktoacutery chcesz skopiowa jest tabel (zdefiniowan przy u yciapolecenia WSTAWIANIETabeleTabela) ca e zadanie b dzie jeszcze atwiejsze Ka databela posiada swoj nazw (na przyk ad Tabela1) i automatycznie rozszerza si w miardodawania nowych wierszy
Sub CopyTable() Range(Tabela1)Copy Sheets(Arkusz2)Range(A1)End Sub
Je eli sproacutebujesz wykona procedur przedstawion powy ej przekonasz si e wiersznag oacutewka tabeli nie jest kopiowany poniewa obiekt Tabela1 nie obejmuje tegowiersza Je li chcesz aby wiersz nag oacutewka roacutewnie by kopiowany powiniene zmieniodwo anie do tabeli tak jak to zosta o przedstawione poni ej
Range(Tabela1[All])
Zaznaczanie komoacuterekdo ko ca wiersza lub kolumnyPrawdopodobnie bardzo cz sto u ywasz kombinacji klawiszy takich jak Ctrl+Shift+ czy Ctrl+Shift+ do zaznaczania zakresoacutew sk adaj cych si ze wszystkich komoacuterekod komoacuterki aktywnej a do ko ca kolumny czy wiersza Nie jest wi c chyba zaskoczenieme mo esz napisa makro ktoacutere b dzie zaznacza komoacuterki w podobny sposoacuteb
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 221
Do zaznaczania ca ego bloku komoacuterek mo esz u y w a ciwo ci CurrentRegion Ale copowiniene zrobi je eli chcesz zaznaczy powiedzmy tylko jedn kolumn z tegobloku komoacuterek Na szcz cie VBA pozwala na wykonywanie takich operacji Proceduraktoacuterej kod przedstawiam poni ej zaznacza zakres komoacuterek pocz wszy od bie cejaktywnej komoacuterki w doacute kolumny a do komoacuterki znajduj cej si o jeden wiersz powy ejpierwszej pustej komoacuterki tej kolumny Po zaznaczeniu zakresu mo esz przetwarza gow dowolny sposoacuteb mdash kopiowa komoacuterki przenosi je w inne miejsce arkusza zmieniaformatowanie i tak dalej
Sub SelectDown() Range(ActiveCell ActiveCellEnd(xlDown))SelectEnd Sub
Oczywi cie taki sam obszar mo esz roacutewnie zaznaczy r cznie Aby to zrobi powinienezaznaczy pierwsz komoacuterk nast pnie wcisn i przytrzyma klawisz Shift nacisnklawisz End i wreszcie nacisn klawisz (strza ka w doacute )
W przyk adzie wykorzystuj metod End obiektu ActiveCell ktoacutera zwraca obiekt typuRange Metoda End pobiera jeden argument okre laj cy kierunek w ktoacuterym zostaniewykonane zaznaczenie Argumentami tej metody mo e by dowolna ze sta ychprzedstawionych poni ej
xlUp
xlDown
xlToLeft
xlToRight
Pami taj e zaznaczanie zakresu nie jest potrzebne do jego przetwarzania Makroprzedstawione poni ej zmienia czcionk w komoacuterkach zmiennego zakresu (pojedynczakolumna) na pogrubion bez uprzedniego zaznaczenia zakresu
Sub MakeBold() Range(ActiveCell ActiveCellEnd(xlDown)) _ FontBold = TrueEnd Sub
Zaznaczanie ca ego wiersza lub ca ej kolumnyProcedura przedstawiona poni ej ilustruje sposoacuteb zaznaczania kolumny w ktoacuterej znajdujesi aktywna komoacuterka Makro wykorzystuje w a ciwo EntireColumn ktoacutera zwracaobiekt typu Range reprezentuj cy ca kolumn
Sub SelectColumn() ActiveCellEntireColumnSelectEnd Sub
Jak pewnie si spodziewasz w j zyku VBA dost pna jest roacutewnie w a ciwo EntireRowktoacutera zwraca obiekt typu Range reprezentuj cy ca y wiersz
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
12 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Formant Label (pole etykiety) 283Formant ListBox (pole listy) 283Formant MultiPage 284Formant OptionButton (przycisk opcji) 285Formant RefEdit (pole zakresu) 286Formant ScrollBar (pasek przewijania) 286Formant SpinButton (pokr t o) 287Formant TabStrip (pole karty) 288Formant TextBox (pole tekstowe) 288Formant ToggleButton (przycisk prze cznika) 289
Praca z formantami w oknach dialogowych 289Zmiana rozmiaroacutew i przenoszenie formantoacutew w inne miejsce 289Rozmieszczanie i wyroacutewnywanie po o enia formantoacutew w oknie dialogowym 290Obs uga u ytkownikoacutew preferuj cych korzystanie z klawiatury 291Testowanie formularzy UserForm 293
Estetyka okien dialogowych 293
Rozdzia 18 Techniki pracy z formularzami UserForm 295Zastosowanie w asnych okien dialogowych 295Przyk adowy formularz UserForm 296
Tworzenie okna dialogowego 296Tworzenie kodu procedury wy wietlaj cej okno dialogowe 298Udost pnianie makra u ytkownikowi 299Testowanie okna dialogowego 299Dodawanie procedur obs ugi zdarze 300Sprawdzanie poprawno ci danych 302Teraz okno dialogowe dzia a tak jak powinno 302
Wi cej przyk adoacutew formularzy UserForm 302Zastosowanie formantoacutew ListBox 303Zaznaczanie zakresoacutew 307Praca z wieloma grupami formantoacutew OptionButton 309Zastosowanie formantoacutew SpinButton oraz TextBox 310Wykorzystywanie formularza UserForm jako wska nika post pu zadania 312Tworzenie niemodalnych okien dialogowych z wieloma kartami 315Wy wietlanie wykresoacutew na formularzach UserForm 317
Lista kontrolna tworzenia i testowania okien dialogowych 318
Rozdzia 19 Udost pnianie makr z poziomu interfejsu u ytkownika 321Dostosowywanie Wst ki 321
R czne dopasowywanie Wst ki do w asnych potrzeb 322Dodawanie do Wst ki przycisku w asnego makra 324Dostosowywanie Wst ki za pomoc kodu XML 324
Dostosowywanie menu podr cznego 329Rodzaje obiektoacutew CommandBar 329Wy wietlanie wszystkich menu podr cznych 329Odwo ania do elementoacutew kolekcji CommandBars 330Odwo ania do formantoacutew obiektu CommandBar 331W a ciwo ci formantoacutew obiektu CommandBar 332
Kup książkę Poleć książkę
Spis tre ci 13
Przyk ady zastosowania VBA do modyfikacji menu podr cznego 334Resetowanie wszystkich wbudowanych menu podr cznych 334Dodawanie nowego elementu do menu podr cznego Cell 335Wy czanie menu podr cznego 337
Tworzenie w asnych paskoacutew narz dzi 338
Cz V Od teorii do praktyki 341Rozdzia 20 Jak tworzy w asne funkcje arkuszowe i jak prze y aby o tym opowiedzie 343
Dlaczego tworzymy w asne funkcje 343Podstawowe informacje o funkcjach VBA 344Tworzenie funkcji 345Praca z argumentami funkcji 345Przyk ady funkcji 346
Funkcje bezargumentowe 346Funkcje jednoargumentowe 346Funkcje z dwoma argumentami 348Funkcje pobieraj ce zakres jako argument 349Funkcje z argumentami opcjonalnymi 351
Funkcje opakowuj ce 353Funkcja NumberFormat 353Funkcja ExtractElement 354Funkcja SayIt 354Funkcja IsLike 355
Funkcje zwracaj ce tablice 355Zwracanie tablicy zawieraj cej nazwy miesi cy 355Zwracanie posortowanej listy 356
Okno dialogowe Wstawianie funkcji 358Wy wietlanie opisoacutew funkcji 358Opisy argumentoacutew 360
Rozdzia 21 Tworzenie dodatkoacutew 361No dobrzehellip czym zatem s dodatki 361Po co tworzy si dodatki 362Praca z dodatkami 363Podstawy tworzenia dodatkoacutew 364Tworzymy przyk adowy dodatek 365
Konfiguracja skoroszytu 365Testowanie skoroszytu 367Tworzenie opisoacutew dodatku 368Ochrona kodu VBA 369Tworzenie dodatku 369Otwieranie dodatku 369Dystrybucja dodatkoacutew 370Modyfikowanie dodatkoacutew 371
Kup książkę Poleć książkę
14 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Cz VI Dekalogi 373Rozdzia 22 Dziesi pyta na temat VBA (wraz z odpowiedziami) 375
Rozdzia 23 (Prawie) dziesi roacutede informacji na temat Excela 379System pomocy j zyka VBA 379Wsparcie techniczne firmy Microsoft 380Inne strony internetowe 380Blogi po wi cone Excelowi 380Google 381Bing 381Lokalne grupy u ytkownikoacutew 381Moje inne ksi ki 381
Rozdzia 24 Dziesi rzeczy ktoacutere powiniene robi w j zyku VBAi ktoacuterych nie powiniene robi 383
Zawsze deklaruj wszystkie zmienne 383Nigdy nie powiniene myli has a chroni cego kod VBA z bezpiecze stwem aplikacji 384Zawsze staraj si wyczy ci i zoptymalizowa kod aplikacji 384Nigdy nie umieszczaj wszystkiego w jednej procedurze 385Zawsze powiniene rozwa y zastosowanie innego oprogramowania 385Nigdy nie zak adaj e ka dy u ytkownik zezwala na uruchamianie makr 386Zawsze staraj si eksperymentowa z nowymi rozwi zaniami 386Nigdy z goacutery nie zak adaj e Twoacutej kod b dzie poprawnie dzia a z innymi wersjami Excela 386Zawsze pami taj o u ytkownikach Twojej aplikacji 387Nigdy nie zapominaj o tworzeniu kopii zapasowych 387
Skorowidz 389
Kup książkę Poleć książkę
Rozdzia 14
Przyk ady i technikiprogramowania w j zyku VBA
W tym rozdziale poznasz szereg przyk adoacutew technik programowania w j zyku VBA dowiesz si jak mo esz przyspieszy dzia anie kodu VBA w Twojej aplikacji
ierz e nauka programowania jest znacznie szybsza i zdecydowanie bardziejefektywna kiedy pracujemy na konkretnych przyk adach Dobrze opracowany
przyk ad o wiele lepiej obja nia zagadnienie ni najbardziej rozbudowany i szczegoacute owyale teoretyczny opis Poniewa czytasz t ksi k prawdopodobnie zgadzasz si ze mnw tej materii W tym rozdziale znajdziesz szereg przyk adoacutew demonstruj cych u ytecznepraktyczne techniki programowania w j zyku VBA
Przyk ady omawiane w tym rozdziale zosta y podzielone na kilka kategorii Oto one
Praca z zakresami
Modyfikacja ustawie Excela
Praca z wykresami
Przyspieszanie i optymalizacja dzia ania kodu VBA
Niektoacutere z prezentowanych przyk adoacutew b dziesz moacuteg od razu wykorzysta w swoichaplikacjach jednak w wi kszo ci przypadkoacutew b d wymaga y pewnego dostosowaniado Twoich aplikacji
Przetwarzanie zakresoacutew komoacuterekWi kszo zada z jakimi b dziesz si styka programuj c w j zyku VBA b dzie zapewnewymaga a mniejszego b d wi kszego przetwarzania zakresoacutew komoacuterek (aby od wie ysobie wiadomo ci na temat obiektu Range powiniene zajrze do rozdzia u 8) Kiedypracujesz z obiektami Range powiniene pami ta o nast puj cych sprawach
Kod VBA nie musi zaznacza danego zakresu aby go przetwarza
Je eli kod VBA zaznacza wybrany zakres przechowuj cy go skoroszyt musi byaktywny
W
Kup książkę Poleć książkę
218 Cz III Podstawy programowania
Rejestrator makr nie zawsze b dzie w stanie wygenerowa optymalny kod VBABardzo cz sto jednak mo esz za jego pomoc utworzy bazowe makro i potemodpowiednio zmodyfikowa kod tak aby sta si bardziej efektywny
Zazwyczaj bardzo dobrym rozwi zaniem jest nadawanie nazw zakresom komoacuterekwykorzystywanym w kodzie VBA Przyk adowo polecenie Range(Total)jestznacznie lepszym rozwi zaniem ni Range(D45) Je li w tym drugim przypadkupoacute niej wstawisz dodatkowy wiersz powy ej wiersza 45 to eby wszystko dzia a opoprawnie b dziesz musia zmodyfikowa makro tak aby korzysta o z nowegopoprawnego adresu komoacuterki a ta po wykonaniu takiej operacji b dzie mia a innyadres (D46) Aby nada nazw wybranemu zakresowi komoacuterek powiniene przejna kart FORMU Y i wybra polecenie Definiuj nazw znajduj ce si w grupiepolece Nazwy zdefiniowane
Kiedy tworzysz makro ktoacutere b dzie przetwarza o zakres komoacuterek zaznaczonyprzez u ytkownika pami taj e u ytkownik mo e zaznaczy kilka ca ych kolumnczy wierszy W wi kszo ci przypadkoacutew z pewno ci nie b dziesz chcia aby makrow p tli przechodzi o w takiej sytuacji przez wszystkie zaznaczone komoacuterki (w czniez pustymi) co mog oby zaj bardzo wiele czasu Dobre makro powinno odszukai przetwarza tylko komoacuterki ktoacutere nie s puste
Excel pozwala na jednoczesne zaznaczanie wielu zakresoacutew komoacuterek Aby to zrobi powiniene zaznaczy pierwszy zakres komoacuterek potem wcisn i przytrzymaklawisz Ctrl i zaznacza kolejne zakresy komoacuterek przy u yciu myszy Kod Twojejaplikacji powinien by przygotowany na takie sytuacje i podejmowa odpowiednieakcje
Skoroszyty z wybranymi przyk adami omawianymi w tym rozdziale znajdziesz na stronieinternetowej naszej ksi ki
Je eli chcesz samodzielnie wpisywa kod omawianych przyk adoacutew przejd do edytoraVBE naciskaj c kombinacj klawiszy lewyAlt+F11 a nast pnie wstaw nowy modu VBAi wpisz kod prezentowanych procedur Upewnij si e Twoacutej skoroszyt jest poprawnieskonfigurowany Je eli na przyk ad kod danego przyk adu odwo uje si do arkuszyo nazwach Arkusz1 i Arkusz2 upewnij si e takie arkusze istniej w Twoim skoroszycie
Kopiowanie zakresoacutewKopiowanie zakresoacutew komoacuterek mo e mia o pretendowa do miana jednej z najcz ciejwykonywanych operacji w Excelu Kiedy w czysz rejestrator makr i skopiujesz zakreskomoacuterek o adresie A1A5 do zakresu B1B5 otrzymasz nast puj ce makro
Sub CopyRange() Range(A1A5)Select SelectionCopy Range(B1)Select ActiveSheetPaste ApplicationCutCopyMode = FalseEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 219
Zwroacute uwag na ostatnie polecenie Zosta o ono wygenerowane przez naci ni cieklawisza Esc po skopiowaniu zakresu komoacuterek co spowodowa o usuni cie przerywanejlinii reprezentuj cej na arkuszu obramowanie kopiowanego zakresu
Przedstawione makro dzia a poprawnie ale zakresy komoacuterek mo na kopiowa w znaczniebardziej efektywny sposoacuteb Identyczny rezultat mo esz osi gn za pomoc proceduryktoacutera sk ada si z tylko jednego wiersza polecenia i nie zaznacza adnych komoacuterek(dzi ki czemu nie wymaga ustawiania w a ciwo ci CutCopyMode na warto False)
Sub CopyRange2() Range(A1A5)Copy Range(B1)End Sub
Procedura przedstawiona powy ej korzysta z tego e metoda Copy mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe kopiowanego zakresu Informacje o tymznalaz em w pomocy systemowej VBA Powy szy przyk ad doskonale roacutewnie ilustrujefakt e rejestrator makr nie zawsze generuje najbardziej efektywny kod
Kopiowanie zakresu o zmiennej wielko ciW wielu przypadkach konieczne jest skopiowanie zakresu komoacuterek dla ktoacuterego dok adnaliczba wierszy i kolumn okre laj cych jego wielko nie jest z goacutery znana Przyk adowomo esz dysponowa skoroszytem ledz cym tygodniow sprzeda w ktoacuterym liczba wierszyzmienia si ka dego tygodnia po wprowadzeniu nowych danych
Na rysunku 141 przedstawiam przyk ad cz sto spotykanego typu arkusza Znajduj cysi w nim zakres komoacuterek sk ada si z kilku wierszy ktoacuterych liczba zmienia si ka degodnia Poniewa nie wiesz jaki jest rozmiar zakresu w danej chwili musisz utworzykod ktoacutery b dzie dzia a bez u ywania adresu zakresu kopiowanych komoacuterek
Rysunek 141Przyk ad zakre-su ktoacutery mo e
sk ada siz dowolnej
liczby wierszy
Makro przedstawione poni ej ilustruje sposoacuteb kopiowania zakresu komoacuterek z arkuszaArkusz1 do arkusza Arkusz2 (pocz wszy od komoacuterki A1) Makro wykorzystuje w a ciwoCurrentRegion ktoacutera zwraca obiekt Range odpowiadaj cy blokowi komoacuterek otaczaj cychokre lon komoacuterk (w tym przypadku o adresie A1)
Kup książkę Poleć książkę
220 Cz III Podstawy programowania
Sub CopyCurrentRegion() Range(A1)CurrentRegionCopy Sheets(Arkusz2)Select Range(A1)Select ActiveSheetPaste Sheets(Arkusz1)Select ApplicationCutCopyMode = FalseEnd Sub
Zastosowanie w a ciwo ci CurrentRegion jest roacutewnowa ne z przej ciem na kartNARZ DZIA G OacuteWNE i wybraniem polecenia Znajd i zaznaczPrzejd do mdashspecjalnie znajduj cego si w grupie opcji Edytowanie i nast pnie zaznaczeniem opcjiBie cy obszar Aby przekona si jak to dzia a podczas wykonywania tych polecepowiniene u y rejestratora makr Zazwyczaj warto w a ciwo ci CurrentRegionreprezentuje prostok tny blok komoacuterek otoczony przez puste wiersze i kolumny
Oczywi cie mo esz zoptymalizowa kod makra przedstawionego powy ej i niezaznacza obszaru docelowego dla kopiowanych komoacuterek Makro przedstawione poni ejkorzysta z faktu e metoda Copy mo e u ywa argumentu wywo ania reprezentuj cegomiejsce docelowe kopiowanego zakresu
Sub CopyCurrentRegion2() Range(A1)CurrentRegionCopy _ Sheets(Arkusz2)Range(A1)End Sub
Je eli zakres komoacuterek ktoacutery chcesz skopiowa jest tabel (zdefiniowan przy u yciapolecenia WSTAWIANIETabeleTabela) ca e zadanie b dzie jeszcze atwiejsze Ka databela posiada swoj nazw (na przyk ad Tabela1) i automatycznie rozszerza si w miardodawania nowych wierszy
Sub CopyTable() Range(Tabela1)Copy Sheets(Arkusz2)Range(A1)End Sub
Je eli sproacutebujesz wykona procedur przedstawion powy ej przekonasz si e wiersznag oacutewka tabeli nie jest kopiowany poniewa obiekt Tabela1 nie obejmuje tegowiersza Je li chcesz aby wiersz nag oacutewka roacutewnie by kopiowany powiniene zmieniodwo anie do tabeli tak jak to zosta o przedstawione poni ej
Range(Tabela1[All])
Zaznaczanie komoacuterekdo ko ca wiersza lub kolumnyPrawdopodobnie bardzo cz sto u ywasz kombinacji klawiszy takich jak Ctrl+Shift+ czy Ctrl+Shift+ do zaznaczania zakresoacutew sk adaj cych si ze wszystkich komoacuterekod komoacuterki aktywnej a do ko ca kolumny czy wiersza Nie jest wi c chyba zaskoczenieme mo esz napisa makro ktoacutere b dzie zaznacza komoacuterki w podobny sposoacuteb
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 221
Do zaznaczania ca ego bloku komoacuterek mo esz u y w a ciwo ci CurrentRegion Ale copowiniene zrobi je eli chcesz zaznaczy powiedzmy tylko jedn kolumn z tegobloku komoacuterek Na szcz cie VBA pozwala na wykonywanie takich operacji Proceduraktoacuterej kod przedstawiam poni ej zaznacza zakres komoacuterek pocz wszy od bie cejaktywnej komoacuterki w doacute kolumny a do komoacuterki znajduj cej si o jeden wiersz powy ejpierwszej pustej komoacuterki tej kolumny Po zaznaczeniu zakresu mo esz przetwarza gow dowolny sposoacuteb mdash kopiowa komoacuterki przenosi je w inne miejsce arkusza zmieniaformatowanie i tak dalej
Sub SelectDown() Range(ActiveCell ActiveCellEnd(xlDown))SelectEnd Sub
Oczywi cie taki sam obszar mo esz roacutewnie zaznaczy r cznie Aby to zrobi powinienezaznaczy pierwsz komoacuterk nast pnie wcisn i przytrzyma klawisz Shift nacisnklawisz End i wreszcie nacisn klawisz (strza ka w doacute )
W przyk adzie wykorzystuj metod End obiektu ActiveCell ktoacutera zwraca obiekt typuRange Metoda End pobiera jeden argument okre laj cy kierunek w ktoacuterym zostaniewykonane zaznaczenie Argumentami tej metody mo e by dowolna ze sta ychprzedstawionych poni ej
xlUp
xlDown
xlToLeft
xlToRight
Pami taj e zaznaczanie zakresu nie jest potrzebne do jego przetwarzania Makroprzedstawione poni ej zmienia czcionk w komoacuterkach zmiennego zakresu (pojedynczakolumna) na pogrubion bez uprzedniego zaznaczenia zakresu
Sub MakeBold() Range(ActiveCell ActiveCellEnd(xlDown)) _ FontBold = TrueEnd Sub
Zaznaczanie ca ego wiersza lub ca ej kolumnyProcedura przedstawiona poni ej ilustruje sposoacuteb zaznaczania kolumny w ktoacuterej znajdujesi aktywna komoacuterka Makro wykorzystuje w a ciwo EntireColumn ktoacutera zwracaobiekt typu Range reprezentuj cy ca kolumn
Sub SelectColumn() ActiveCellEntireColumnSelectEnd Sub
Jak pewnie si spodziewasz w j zyku VBA dost pna jest roacutewnie w a ciwo EntireRowktoacutera zwraca obiekt typu Range reprezentuj cy ca y wiersz
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Spis tre ci 13
Przyk ady zastosowania VBA do modyfikacji menu podr cznego 334Resetowanie wszystkich wbudowanych menu podr cznych 334Dodawanie nowego elementu do menu podr cznego Cell 335Wy czanie menu podr cznego 337
Tworzenie w asnych paskoacutew narz dzi 338
Cz V Od teorii do praktyki 341Rozdzia 20 Jak tworzy w asne funkcje arkuszowe i jak prze y aby o tym opowiedzie 343
Dlaczego tworzymy w asne funkcje 343Podstawowe informacje o funkcjach VBA 344Tworzenie funkcji 345Praca z argumentami funkcji 345Przyk ady funkcji 346
Funkcje bezargumentowe 346Funkcje jednoargumentowe 346Funkcje z dwoma argumentami 348Funkcje pobieraj ce zakres jako argument 349Funkcje z argumentami opcjonalnymi 351
Funkcje opakowuj ce 353Funkcja NumberFormat 353Funkcja ExtractElement 354Funkcja SayIt 354Funkcja IsLike 355
Funkcje zwracaj ce tablice 355Zwracanie tablicy zawieraj cej nazwy miesi cy 355Zwracanie posortowanej listy 356
Okno dialogowe Wstawianie funkcji 358Wy wietlanie opisoacutew funkcji 358Opisy argumentoacutew 360
Rozdzia 21 Tworzenie dodatkoacutew 361No dobrzehellip czym zatem s dodatki 361Po co tworzy si dodatki 362Praca z dodatkami 363Podstawy tworzenia dodatkoacutew 364Tworzymy przyk adowy dodatek 365
Konfiguracja skoroszytu 365Testowanie skoroszytu 367Tworzenie opisoacutew dodatku 368Ochrona kodu VBA 369Tworzenie dodatku 369Otwieranie dodatku 369Dystrybucja dodatkoacutew 370Modyfikowanie dodatkoacutew 371
Kup książkę Poleć książkę
14 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Cz VI Dekalogi 373Rozdzia 22 Dziesi pyta na temat VBA (wraz z odpowiedziami) 375
Rozdzia 23 (Prawie) dziesi roacutede informacji na temat Excela 379System pomocy j zyka VBA 379Wsparcie techniczne firmy Microsoft 380Inne strony internetowe 380Blogi po wi cone Excelowi 380Google 381Bing 381Lokalne grupy u ytkownikoacutew 381Moje inne ksi ki 381
Rozdzia 24 Dziesi rzeczy ktoacutere powiniene robi w j zyku VBAi ktoacuterych nie powiniene robi 383
Zawsze deklaruj wszystkie zmienne 383Nigdy nie powiniene myli has a chroni cego kod VBA z bezpiecze stwem aplikacji 384Zawsze staraj si wyczy ci i zoptymalizowa kod aplikacji 384Nigdy nie umieszczaj wszystkiego w jednej procedurze 385Zawsze powiniene rozwa y zastosowanie innego oprogramowania 385Nigdy nie zak adaj e ka dy u ytkownik zezwala na uruchamianie makr 386Zawsze staraj si eksperymentowa z nowymi rozwi zaniami 386Nigdy z goacutery nie zak adaj e Twoacutej kod b dzie poprawnie dzia a z innymi wersjami Excela 386Zawsze pami taj o u ytkownikach Twojej aplikacji 387Nigdy nie zapominaj o tworzeniu kopii zapasowych 387
Skorowidz 389
Kup książkę Poleć książkę
Rozdzia 14
Przyk ady i technikiprogramowania w j zyku VBA
W tym rozdziale poznasz szereg przyk adoacutew technik programowania w j zyku VBA dowiesz si jak mo esz przyspieszy dzia anie kodu VBA w Twojej aplikacji
ierz e nauka programowania jest znacznie szybsza i zdecydowanie bardziejefektywna kiedy pracujemy na konkretnych przyk adach Dobrze opracowany
przyk ad o wiele lepiej obja nia zagadnienie ni najbardziej rozbudowany i szczegoacute owyale teoretyczny opis Poniewa czytasz t ksi k prawdopodobnie zgadzasz si ze mnw tej materii W tym rozdziale znajdziesz szereg przyk adoacutew demonstruj cych u ytecznepraktyczne techniki programowania w j zyku VBA
Przyk ady omawiane w tym rozdziale zosta y podzielone na kilka kategorii Oto one
Praca z zakresami
Modyfikacja ustawie Excela
Praca z wykresami
Przyspieszanie i optymalizacja dzia ania kodu VBA
Niektoacutere z prezentowanych przyk adoacutew b dziesz moacuteg od razu wykorzysta w swoichaplikacjach jednak w wi kszo ci przypadkoacutew b d wymaga y pewnego dostosowaniado Twoich aplikacji
Przetwarzanie zakresoacutew komoacuterekWi kszo zada z jakimi b dziesz si styka programuj c w j zyku VBA b dzie zapewnewymaga a mniejszego b d wi kszego przetwarzania zakresoacutew komoacuterek (aby od wie ysobie wiadomo ci na temat obiektu Range powiniene zajrze do rozdzia u 8) Kiedypracujesz z obiektami Range powiniene pami ta o nast puj cych sprawach
Kod VBA nie musi zaznacza danego zakresu aby go przetwarza
Je eli kod VBA zaznacza wybrany zakres przechowuj cy go skoroszyt musi byaktywny
W
Kup książkę Poleć książkę
218 Cz III Podstawy programowania
Rejestrator makr nie zawsze b dzie w stanie wygenerowa optymalny kod VBABardzo cz sto jednak mo esz za jego pomoc utworzy bazowe makro i potemodpowiednio zmodyfikowa kod tak aby sta si bardziej efektywny
Zazwyczaj bardzo dobrym rozwi zaniem jest nadawanie nazw zakresom komoacuterekwykorzystywanym w kodzie VBA Przyk adowo polecenie Range(Total)jestznacznie lepszym rozwi zaniem ni Range(D45) Je li w tym drugim przypadkupoacute niej wstawisz dodatkowy wiersz powy ej wiersza 45 to eby wszystko dzia a opoprawnie b dziesz musia zmodyfikowa makro tak aby korzysta o z nowegopoprawnego adresu komoacuterki a ta po wykonaniu takiej operacji b dzie mia a innyadres (D46) Aby nada nazw wybranemu zakresowi komoacuterek powiniene przejna kart FORMU Y i wybra polecenie Definiuj nazw znajduj ce si w grupiepolece Nazwy zdefiniowane
Kiedy tworzysz makro ktoacutere b dzie przetwarza o zakres komoacuterek zaznaczonyprzez u ytkownika pami taj e u ytkownik mo e zaznaczy kilka ca ych kolumnczy wierszy W wi kszo ci przypadkoacutew z pewno ci nie b dziesz chcia aby makrow p tli przechodzi o w takiej sytuacji przez wszystkie zaznaczone komoacuterki (w czniez pustymi) co mog oby zaj bardzo wiele czasu Dobre makro powinno odszukai przetwarza tylko komoacuterki ktoacutere nie s puste
Excel pozwala na jednoczesne zaznaczanie wielu zakresoacutew komoacuterek Aby to zrobi powiniene zaznaczy pierwszy zakres komoacuterek potem wcisn i przytrzymaklawisz Ctrl i zaznacza kolejne zakresy komoacuterek przy u yciu myszy Kod Twojejaplikacji powinien by przygotowany na takie sytuacje i podejmowa odpowiednieakcje
Skoroszyty z wybranymi przyk adami omawianymi w tym rozdziale znajdziesz na stronieinternetowej naszej ksi ki
Je eli chcesz samodzielnie wpisywa kod omawianych przyk adoacutew przejd do edytoraVBE naciskaj c kombinacj klawiszy lewyAlt+F11 a nast pnie wstaw nowy modu VBAi wpisz kod prezentowanych procedur Upewnij si e Twoacutej skoroszyt jest poprawnieskonfigurowany Je eli na przyk ad kod danego przyk adu odwo uje si do arkuszyo nazwach Arkusz1 i Arkusz2 upewnij si e takie arkusze istniej w Twoim skoroszycie
Kopiowanie zakresoacutewKopiowanie zakresoacutew komoacuterek mo e mia o pretendowa do miana jednej z najcz ciejwykonywanych operacji w Excelu Kiedy w czysz rejestrator makr i skopiujesz zakreskomoacuterek o adresie A1A5 do zakresu B1B5 otrzymasz nast puj ce makro
Sub CopyRange() Range(A1A5)Select SelectionCopy Range(B1)Select ActiveSheetPaste ApplicationCutCopyMode = FalseEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 219
Zwroacute uwag na ostatnie polecenie Zosta o ono wygenerowane przez naci ni cieklawisza Esc po skopiowaniu zakresu komoacuterek co spowodowa o usuni cie przerywanejlinii reprezentuj cej na arkuszu obramowanie kopiowanego zakresu
Przedstawione makro dzia a poprawnie ale zakresy komoacuterek mo na kopiowa w znaczniebardziej efektywny sposoacuteb Identyczny rezultat mo esz osi gn za pomoc proceduryktoacutera sk ada si z tylko jednego wiersza polecenia i nie zaznacza adnych komoacuterek(dzi ki czemu nie wymaga ustawiania w a ciwo ci CutCopyMode na warto False)
Sub CopyRange2() Range(A1A5)Copy Range(B1)End Sub
Procedura przedstawiona powy ej korzysta z tego e metoda Copy mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe kopiowanego zakresu Informacje o tymznalaz em w pomocy systemowej VBA Powy szy przyk ad doskonale roacutewnie ilustrujefakt e rejestrator makr nie zawsze generuje najbardziej efektywny kod
Kopiowanie zakresu o zmiennej wielko ciW wielu przypadkach konieczne jest skopiowanie zakresu komoacuterek dla ktoacuterego dok adnaliczba wierszy i kolumn okre laj cych jego wielko nie jest z goacutery znana Przyk adowomo esz dysponowa skoroszytem ledz cym tygodniow sprzeda w ktoacuterym liczba wierszyzmienia si ka dego tygodnia po wprowadzeniu nowych danych
Na rysunku 141 przedstawiam przyk ad cz sto spotykanego typu arkusza Znajduj cysi w nim zakres komoacuterek sk ada si z kilku wierszy ktoacuterych liczba zmienia si ka degodnia Poniewa nie wiesz jaki jest rozmiar zakresu w danej chwili musisz utworzykod ktoacutery b dzie dzia a bez u ywania adresu zakresu kopiowanych komoacuterek
Rysunek 141Przyk ad zakre-su ktoacutery mo e
sk ada siz dowolnej
liczby wierszy
Makro przedstawione poni ej ilustruje sposoacuteb kopiowania zakresu komoacuterek z arkuszaArkusz1 do arkusza Arkusz2 (pocz wszy od komoacuterki A1) Makro wykorzystuje w a ciwoCurrentRegion ktoacutera zwraca obiekt Range odpowiadaj cy blokowi komoacuterek otaczaj cychokre lon komoacuterk (w tym przypadku o adresie A1)
Kup książkę Poleć książkę
220 Cz III Podstawy programowania
Sub CopyCurrentRegion() Range(A1)CurrentRegionCopy Sheets(Arkusz2)Select Range(A1)Select ActiveSheetPaste Sheets(Arkusz1)Select ApplicationCutCopyMode = FalseEnd Sub
Zastosowanie w a ciwo ci CurrentRegion jest roacutewnowa ne z przej ciem na kartNARZ DZIA G OacuteWNE i wybraniem polecenia Znajd i zaznaczPrzejd do mdashspecjalnie znajduj cego si w grupie opcji Edytowanie i nast pnie zaznaczeniem opcjiBie cy obszar Aby przekona si jak to dzia a podczas wykonywania tych polecepowiniene u y rejestratora makr Zazwyczaj warto w a ciwo ci CurrentRegionreprezentuje prostok tny blok komoacuterek otoczony przez puste wiersze i kolumny
Oczywi cie mo esz zoptymalizowa kod makra przedstawionego powy ej i niezaznacza obszaru docelowego dla kopiowanych komoacuterek Makro przedstawione poni ejkorzysta z faktu e metoda Copy mo e u ywa argumentu wywo ania reprezentuj cegomiejsce docelowe kopiowanego zakresu
Sub CopyCurrentRegion2() Range(A1)CurrentRegionCopy _ Sheets(Arkusz2)Range(A1)End Sub
Je eli zakres komoacuterek ktoacutery chcesz skopiowa jest tabel (zdefiniowan przy u yciapolecenia WSTAWIANIETabeleTabela) ca e zadanie b dzie jeszcze atwiejsze Ka databela posiada swoj nazw (na przyk ad Tabela1) i automatycznie rozszerza si w miardodawania nowych wierszy
Sub CopyTable() Range(Tabela1)Copy Sheets(Arkusz2)Range(A1)End Sub
Je eli sproacutebujesz wykona procedur przedstawion powy ej przekonasz si e wiersznag oacutewka tabeli nie jest kopiowany poniewa obiekt Tabela1 nie obejmuje tegowiersza Je li chcesz aby wiersz nag oacutewka roacutewnie by kopiowany powiniene zmieniodwo anie do tabeli tak jak to zosta o przedstawione poni ej
Range(Tabela1[All])
Zaznaczanie komoacuterekdo ko ca wiersza lub kolumnyPrawdopodobnie bardzo cz sto u ywasz kombinacji klawiszy takich jak Ctrl+Shift+ czy Ctrl+Shift+ do zaznaczania zakresoacutew sk adaj cych si ze wszystkich komoacuterekod komoacuterki aktywnej a do ko ca kolumny czy wiersza Nie jest wi c chyba zaskoczenieme mo esz napisa makro ktoacutere b dzie zaznacza komoacuterki w podobny sposoacuteb
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 221
Do zaznaczania ca ego bloku komoacuterek mo esz u y w a ciwo ci CurrentRegion Ale copowiniene zrobi je eli chcesz zaznaczy powiedzmy tylko jedn kolumn z tegobloku komoacuterek Na szcz cie VBA pozwala na wykonywanie takich operacji Proceduraktoacuterej kod przedstawiam poni ej zaznacza zakres komoacuterek pocz wszy od bie cejaktywnej komoacuterki w doacute kolumny a do komoacuterki znajduj cej si o jeden wiersz powy ejpierwszej pustej komoacuterki tej kolumny Po zaznaczeniu zakresu mo esz przetwarza gow dowolny sposoacuteb mdash kopiowa komoacuterki przenosi je w inne miejsce arkusza zmieniaformatowanie i tak dalej
Sub SelectDown() Range(ActiveCell ActiveCellEnd(xlDown))SelectEnd Sub
Oczywi cie taki sam obszar mo esz roacutewnie zaznaczy r cznie Aby to zrobi powinienezaznaczy pierwsz komoacuterk nast pnie wcisn i przytrzyma klawisz Shift nacisnklawisz End i wreszcie nacisn klawisz (strza ka w doacute )
W przyk adzie wykorzystuj metod End obiektu ActiveCell ktoacutera zwraca obiekt typuRange Metoda End pobiera jeden argument okre laj cy kierunek w ktoacuterym zostaniewykonane zaznaczenie Argumentami tej metody mo e by dowolna ze sta ychprzedstawionych poni ej
xlUp
xlDown
xlToLeft
xlToRight
Pami taj e zaznaczanie zakresu nie jest potrzebne do jego przetwarzania Makroprzedstawione poni ej zmienia czcionk w komoacuterkach zmiennego zakresu (pojedynczakolumna) na pogrubion bez uprzedniego zaznaczenia zakresu
Sub MakeBold() Range(ActiveCell ActiveCellEnd(xlDown)) _ FontBold = TrueEnd Sub
Zaznaczanie ca ego wiersza lub ca ej kolumnyProcedura przedstawiona poni ej ilustruje sposoacuteb zaznaczania kolumny w ktoacuterej znajdujesi aktywna komoacuterka Makro wykorzystuje w a ciwo EntireColumn ktoacutera zwracaobiekt typu Range reprezentuj cy ca kolumn
Sub SelectColumn() ActiveCellEntireColumnSelectEnd Sub
Jak pewnie si spodziewasz w j zyku VBA dost pna jest roacutewnie w a ciwo EntireRowktoacutera zwraca obiekt typu Range reprezentuj cy ca y wiersz
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
14 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Cz VI Dekalogi 373Rozdzia 22 Dziesi pyta na temat VBA (wraz z odpowiedziami) 375
Rozdzia 23 (Prawie) dziesi roacutede informacji na temat Excela 379System pomocy j zyka VBA 379Wsparcie techniczne firmy Microsoft 380Inne strony internetowe 380Blogi po wi cone Excelowi 380Google 381Bing 381Lokalne grupy u ytkownikoacutew 381Moje inne ksi ki 381
Rozdzia 24 Dziesi rzeczy ktoacutere powiniene robi w j zyku VBAi ktoacuterych nie powiniene robi 383
Zawsze deklaruj wszystkie zmienne 383Nigdy nie powiniene myli has a chroni cego kod VBA z bezpiecze stwem aplikacji 384Zawsze staraj si wyczy ci i zoptymalizowa kod aplikacji 384Nigdy nie umieszczaj wszystkiego w jednej procedurze 385Zawsze powiniene rozwa y zastosowanie innego oprogramowania 385Nigdy nie zak adaj e ka dy u ytkownik zezwala na uruchamianie makr 386Zawsze staraj si eksperymentowa z nowymi rozwi zaniami 386Nigdy z goacutery nie zak adaj e Twoacutej kod b dzie poprawnie dzia a z innymi wersjami Excela 386Zawsze pami taj o u ytkownikach Twojej aplikacji 387Nigdy nie zapominaj o tworzeniu kopii zapasowych 387
Skorowidz 389
Kup książkę Poleć książkę
Rozdzia 14
Przyk ady i technikiprogramowania w j zyku VBA
W tym rozdziale poznasz szereg przyk adoacutew technik programowania w j zyku VBA dowiesz si jak mo esz przyspieszy dzia anie kodu VBA w Twojej aplikacji
ierz e nauka programowania jest znacznie szybsza i zdecydowanie bardziejefektywna kiedy pracujemy na konkretnych przyk adach Dobrze opracowany
przyk ad o wiele lepiej obja nia zagadnienie ni najbardziej rozbudowany i szczegoacute owyale teoretyczny opis Poniewa czytasz t ksi k prawdopodobnie zgadzasz si ze mnw tej materii W tym rozdziale znajdziesz szereg przyk adoacutew demonstruj cych u ytecznepraktyczne techniki programowania w j zyku VBA
Przyk ady omawiane w tym rozdziale zosta y podzielone na kilka kategorii Oto one
Praca z zakresami
Modyfikacja ustawie Excela
Praca z wykresami
Przyspieszanie i optymalizacja dzia ania kodu VBA
Niektoacutere z prezentowanych przyk adoacutew b dziesz moacuteg od razu wykorzysta w swoichaplikacjach jednak w wi kszo ci przypadkoacutew b d wymaga y pewnego dostosowaniado Twoich aplikacji
Przetwarzanie zakresoacutew komoacuterekWi kszo zada z jakimi b dziesz si styka programuj c w j zyku VBA b dzie zapewnewymaga a mniejszego b d wi kszego przetwarzania zakresoacutew komoacuterek (aby od wie ysobie wiadomo ci na temat obiektu Range powiniene zajrze do rozdzia u 8) Kiedypracujesz z obiektami Range powiniene pami ta o nast puj cych sprawach
Kod VBA nie musi zaznacza danego zakresu aby go przetwarza
Je eli kod VBA zaznacza wybrany zakres przechowuj cy go skoroszyt musi byaktywny
W
Kup książkę Poleć książkę
218 Cz III Podstawy programowania
Rejestrator makr nie zawsze b dzie w stanie wygenerowa optymalny kod VBABardzo cz sto jednak mo esz za jego pomoc utworzy bazowe makro i potemodpowiednio zmodyfikowa kod tak aby sta si bardziej efektywny
Zazwyczaj bardzo dobrym rozwi zaniem jest nadawanie nazw zakresom komoacuterekwykorzystywanym w kodzie VBA Przyk adowo polecenie Range(Total)jestznacznie lepszym rozwi zaniem ni Range(D45) Je li w tym drugim przypadkupoacute niej wstawisz dodatkowy wiersz powy ej wiersza 45 to eby wszystko dzia a opoprawnie b dziesz musia zmodyfikowa makro tak aby korzysta o z nowegopoprawnego adresu komoacuterki a ta po wykonaniu takiej operacji b dzie mia a innyadres (D46) Aby nada nazw wybranemu zakresowi komoacuterek powiniene przejna kart FORMU Y i wybra polecenie Definiuj nazw znajduj ce si w grupiepolece Nazwy zdefiniowane
Kiedy tworzysz makro ktoacutere b dzie przetwarza o zakres komoacuterek zaznaczonyprzez u ytkownika pami taj e u ytkownik mo e zaznaczy kilka ca ych kolumnczy wierszy W wi kszo ci przypadkoacutew z pewno ci nie b dziesz chcia aby makrow p tli przechodzi o w takiej sytuacji przez wszystkie zaznaczone komoacuterki (w czniez pustymi) co mog oby zaj bardzo wiele czasu Dobre makro powinno odszukai przetwarza tylko komoacuterki ktoacutere nie s puste
Excel pozwala na jednoczesne zaznaczanie wielu zakresoacutew komoacuterek Aby to zrobi powiniene zaznaczy pierwszy zakres komoacuterek potem wcisn i przytrzymaklawisz Ctrl i zaznacza kolejne zakresy komoacuterek przy u yciu myszy Kod Twojejaplikacji powinien by przygotowany na takie sytuacje i podejmowa odpowiednieakcje
Skoroszyty z wybranymi przyk adami omawianymi w tym rozdziale znajdziesz na stronieinternetowej naszej ksi ki
Je eli chcesz samodzielnie wpisywa kod omawianych przyk adoacutew przejd do edytoraVBE naciskaj c kombinacj klawiszy lewyAlt+F11 a nast pnie wstaw nowy modu VBAi wpisz kod prezentowanych procedur Upewnij si e Twoacutej skoroszyt jest poprawnieskonfigurowany Je eli na przyk ad kod danego przyk adu odwo uje si do arkuszyo nazwach Arkusz1 i Arkusz2 upewnij si e takie arkusze istniej w Twoim skoroszycie
Kopiowanie zakresoacutewKopiowanie zakresoacutew komoacuterek mo e mia o pretendowa do miana jednej z najcz ciejwykonywanych operacji w Excelu Kiedy w czysz rejestrator makr i skopiujesz zakreskomoacuterek o adresie A1A5 do zakresu B1B5 otrzymasz nast puj ce makro
Sub CopyRange() Range(A1A5)Select SelectionCopy Range(B1)Select ActiveSheetPaste ApplicationCutCopyMode = FalseEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 219
Zwroacute uwag na ostatnie polecenie Zosta o ono wygenerowane przez naci ni cieklawisza Esc po skopiowaniu zakresu komoacuterek co spowodowa o usuni cie przerywanejlinii reprezentuj cej na arkuszu obramowanie kopiowanego zakresu
Przedstawione makro dzia a poprawnie ale zakresy komoacuterek mo na kopiowa w znaczniebardziej efektywny sposoacuteb Identyczny rezultat mo esz osi gn za pomoc proceduryktoacutera sk ada si z tylko jednego wiersza polecenia i nie zaznacza adnych komoacuterek(dzi ki czemu nie wymaga ustawiania w a ciwo ci CutCopyMode na warto False)
Sub CopyRange2() Range(A1A5)Copy Range(B1)End Sub
Procedura przedstawiona powy ej korzysta z tego e metoda Copy mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe kopiowanego zakresu Informacje o tymznalaz em w pomocy systemowej VBA Powy szy przyk ad doskonale roacutewnie ilustrujefakt e rejestrator makr nie zawsze generuje najbardziej efektywny kod
Kopiowanie zakresu o zmiennej wielko ciW wielu przypadkach konieczne jest skopiowanie zakresu komoacuterek dla ktoacuterego dok adnaliczba wierszy i kolumn okre laj cych jego wielko nie jest z goacutery znana Przyk adowomo esz dysponowa skoroszytem ledz cym tygodniow sprzeda w ktoacuterym liczba wierszyzmienia si ka dego tygodnia po wprowadzeniu nowych danych
Na rysunku 141 przedstawiam przyk ad cz sto spotykanego typu arkusza Znajduj cysi w nim zakres komoacuterek sk ada si z kilku wierszy ktoacuterych liczba zmienia si ka degodnia Poniewa nie wiesz jaki jest rozmiar zakresu w danej chwili musisz utworzykod ktoacutery b dzie dzia a bez u ywania adresu zakresu kopiowanych komoacuterek
Rysunek 141Przyk ad zakre-su ktoacutery mo e
sk ada siz dowolnej
liczby wierszy
Makro przedstawione poni ej ilustruje sposoacuteb kopiowania zakresu komoacuterek z arkuszaArkusz1 do arkusza Arkusz2 (pocz wszy od komoacuterki A1) Makro wykorzystuje w a ciwoCurrentRegion ktoacutera zwraca obiekt Range odpowiadaj cy blokowi komoacuterek otaczaj cychokre lon komoacuterk (w tym przypadku o adresie A1)
Kup książkę Poleć książkę
220 Cz III Podstawy programowania
Sub CopyCurrentRegion() Range(A1)CurrentRegionCopy Sheets(Arkusz2)Select Range(A1)Select ActiveSheetPaste Sheets(Arkusz1)Select ApplicationCutCopyMode = FalseEnd Sub
Zastosowanie w a ciwo ci CurrentRegion jest roacutewnowa ne z przej ciem na kartNARZ DZIA G OacuteWNE i wybraniem polecenia Znajd i zaznaczPrzejd do mdashspecjalnie znajduj cego si w grupie opcji Edytowanie i nast pnie zaznaczeniem opcjiBie cy obszar Aby przekona si jak to dzia a podczas wykonywania tych polecepowiniene u y rejestratora makr Zazwyczaj warto w a ciwo ci CurrentRegionreprezentuje prostok tny blok komoacuterek otoczony przez puste wiersze i kolumny
Oczywi cie mo esz zoptymalizowa kod makra przedstawionego powy ej i niezaznacza obszaru docelowego dla kopiowanych komoacuterek Makro przedstawione poni ejkorzysta z faktu e metoda Copy mo e u ywa argumentu wywo ania reprezentuj cegomiejsce docelowe kopiowanego zakresu
Sub CopyCurrentRegion2() Range(A1)CurrentRegionCopy _ Sheets(Arkusz2)Range(A1)End Sub
Je eli zakres komoacuterek ktoacutery chcesz skopiowa jest tabel (zdefiniowan przy u yciapolecenia WSTAWIANIETabeleTabela) ca e zadanie b dzie jeszcze atwiejsze Ka databela posiada swoj nazw (na przyk ad Tabela1) i automatycznie rozszerza si w miardodawania nowych wierszy
Sub CopyTable() Range(Tabela1)Copy Sheets(Arkusz2)Range(A1)End Sub
Je eli sproacutebujesz wykona procedur przedstawion powy ej przekonasz si e wiersznag oacutewka tabeli nie jest kopiowany poniewa obiekt Tabela1 nie obejmuje tegowiersza Je li chcesz aby wiersz nag oacutewka roacutewnie by kopiowany powiniene zmieniodwo anie do tabeli tak jak to zosta o przedstawione poni ej
Range(Tabela1[All])
Zaznaczanie komoacuterekdo ko ca wiersza lub kolumnyPrawdopodobnie bardzo cz sto u ywasz kombinacji klawiszy takich jak Ctrl+Shift+ czy Ctrl+Shift+ do zaznaczania zakresoacutew sk adaj cych si ze wszystkich komoacuterekod komoacuterki aktywnej a do ko ca kolumny czy wiersza Nie jest wi c chyba zaskoczenieme mo esz napisa makro ktoacutere b dzie zaznacza komoacuterki w podobny sposoacuteb
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 221
Do zaznaczania ca ego bloku komoacuterek mo esz u y w a ciwo ci CurrentRegion Ale copowiniene zrobi je eli chcesz zaznaczy powiedzmy tylko jedn kolumn z tegobloku komoacuterek Na szcz cie VBA pozwala na wykonywanie takich operacji Proceduraktoacuterej kod przedstawiam poni ej zaznacza zakres komoacuterek pocz wszy od bie cejaktywnej komoacuterki w doacute kolumny a do komoacuterki znajduj cej si o jeden wiersz powy ejpierwszej pustej komoacuterki tej kolumny Po zaznaczeniu zakresu mo esz przetwarza gow dowolny sposoacuteb mdash kopiowa komoacuterki przenosi je w inne miejsce arkusza zmieniaformatowanie i tak dalej
Sub SelectDown() Range(ActiveCell ActiveCellEnd(xlDown))SelectEnd Sub
Oczywi cie taki sam obszar mo esz roacutewnie zaznaczy r cznie Aby to zrobi powinienezaznaczy pierwsz komoacuterk nast pnie wcisn i przytrzyma klawisz Shift nacisnklawisz End i wreszcie nacisn klawisz (strza ka w doacute )
W przyk adzie wykorzystuj metod End obiektu ActiveCell ktoacutera zwraca obiekt typuRange Metoda End pobiera jeden argument okre laj cy kierunek w ktoacuterym zostaniewykonane zaznaczenie Argumentami tej metody mo e by dowolna ze sta ychprzedstawionych poni ej
xlUp
xlDown
xlToLeft
xlToRight
Pami taj e zaznaczanie zakresu nie jest potrzebne do jego przetwarzania Makroprzedstawione poni ej zmienia czcionk w komoacuterkach zmiennego zakresu (pojedynczakolumna) na pogrubion bez uprzedniego zaznaczenia zakresu
Sub MakeBold() Range(ActiveCell ActiveCellEnd(xlDown)) _ FontBold = TrueEnd Sub
Zaznaczanie ca ego wiersza lub ca ej kolumnyProcedura przedstawiona poni ej ilustruje sposoacuteb zaznaczania kolumny w ktoacuterej znajdujesi aktywna komoacuterka Makro wykorzystuje w a ciwo EntireColumn ktoacutera zwracaobiekt typu Range reprezentuj cy ca kolumn
Sub SelectColumn() ActiveCellEntireColumnSelectEnd Sub
Jak pewnie si spodziewasz w j zyku VBA dost pna jest roacutewnie w a ciwo EntireRowktoacutera zwraca obiekt typu Range reprezentuj cy ca y wiersz
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Rozdzia 14
Przyk ady i technikiprogramowania w j zyku VBA
W tym rozdziale poznasz szereg przyk adoacutew technik programowania w j zyku VBA dowiesz si jak mo esz przyspieszy dzia anie kodu VBA w Twojej aplikacji
ierz e nauka programowania jest znacznie szybsza i zdecydowanie bardziejefektywna kiedy pracujemy na konkretnych przyk adach Dobrze opracowany
przyk ad o wiele lepiej obja nia zagadnienie ni najbardziej rozbudowany i szczegoacute owyale teoretyczny opis Poniewa czytasz t ksi k prawdopodobnie zgadzasz si ze mnw tej materii W tym rozdziale znajdziesz szereg przyk adoacutew demonstruj cych u ytecznepraktyczne techniki programowania w j zyku VBA
Przyk ady omawiane w tym rozdziale zosta y podzielone na kilka kategorii Oto one
Praca z zakresami
Modyfikacja ustawie Excela
Praca z wykresami
Przyspieszanie i optymalizacja dzia ania kodu VBA
Niektoacutere z prezentowanych przyk adoacutew b dziesz moacuteg od razu wykorzysta w swoichaplikacjach jednak w wi kszo ci przypadkoacutew b d wymaga y pewnego dostosowaniado Twoich aplikacji
Przetwarzanie zakresoacutew komoacuterekWi kszo zada z jakimi b dziesz si styka programuj c w j zyku VBA b dzie zapewnewymaga a mniejszego b d wi kszego przetwarzania zakresoacutew komoacuterek (aby od wie ysobie wiadomo ci na temat obiektu Range powiniene zajrze do rozdzia u 8) Kiedypracujesz z obiektami Range powiniene pami ta o nast puj cych sprawach
Kod VBA nie musi zaznacza danego zakresu aby go przetwarza
Je eli kod VBA zaznacza wybrany zakres przechowuj cy go skoroszyt musi byaktywny
W
Kup książkę Poleć książkę
218 Cz III Podstawy programowania
Rejestrator makr nie zawsze b dzie w stanie wygenerowa optymalny kod VBABardzo cz sto jednak mo esz za jego pomoc utworzy bazowe makro i potemodpowiednio zmodyfikowa kod tak aby sta si bardziej efektywny
Zazwyczaj bardzo dobrym rozwi zaniem jest nadawanie nazw zakresom komoacuterekwykorzystywanym w kodzie VBA Przyk adowo polecenie Range(Total)jestznacznie lepszym rozwi zaniem ni Range(D45) Je li w tym drugim przypadkupoacute niej wstawisz dodatkowy wiersz powy ej wiersza 45 to eby wszystko dzia a opoprawnie b dziesz musia zmodyfikowa makro tak aby korzysta o z nowegopoprawnego adresu komoacuterki a ta po wykonaniu takiej operacji b dzie mia a innyadres (D46) Aby nada nazw wybranemu zakresowi komoacuterek powiniene przejna kart FORMU Y i wybra polecenie Definiuj nazw znajduj ce si w grupiepolece Nazwy zdefiniowane
Kiedy tworzysz makro ktoacutere b dzie przetwarza o zakres komoacuterek zaznaczonyprzez u ytkownika pami taj e u ytkownik mo e zaznaczy kilka ca ych kolumnczy wierszy W wi kszo ci przypadkoacutew z pewno ci nie b dziesz chcia aby makrow p tli przechodzi o w takiej sytuacji przez wszystkie zaznaczone komoacuterki (w czniez pustymi) co mog oby zaj bardzo wiele czasu Dobre makro powinno odszukai przetwarza tylko komoacuterki ktoacutere nie s puste
Excel pozwala na jednoczesne zaznaczanie wielu zakresoacutew komoacuterek Aby to zrobi powiniene zaznaczy pierwszy zakres komoacuterek potem wcisn i przytrzymaklawisz Ctrl i zaznacza kolejne zakresy komoacuterek przy u yciu myszy Kod Twojejaplikacji powinien by przygotowany na takie sytuacje i podejmowa odpowiednieakcje
Skoroszyty z wybranymi przyk adami omawianymi w tym rozdziale znajdziesz na stronieinternetowej naszej ksi ki
Je eli chcesz samodzielnie wpisywa kod omawianych przyk adoacutew przejd do edytoraVBE naciskaj c kombinacj klawiszy lewyAlt+F11 a nast pnie wstaw nowy modu VBAi wpisz kod prezentowanych procedur Upewnij si e Twoacutej skoroszyt jest poprawnieskonfigurowany Je eli na przyk ad kod danego przyk adu odwo uje si do arkuszyo nazwach Arkusz1 i Arkusz2 upewnij si e takie arkusze istniej w Twoim skoroszycie
Kopiowanie zakresoacutewKopiowanie zakresoacutew komoacuterek mo e mia o pretendowa do miana jednej z najcz ciejwykonywanych operacji w Excelu Kiedy w czysz rejestrator makr i skopiujesz zakreskomoacuterek o adresie A1A5 do zakresu B1B5 otrzymasz nast puj ce makro
Sub CopyRange() Range(A1A5)Select SelectionCopy Range(B1)Select ActiveSheetPaste ApplicationCutCopyMode = FalseEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 219
Zwroacute uwag na ostatnie polecenie Zosta o ono wygenerowane przez naci ni cieklawisza Esc po skopiowaniu zakresu komoacuterek co spowodowa o usuni cie przerywanejlinii reprezentuj cej na arkuszu obramowanie kopiowanego zakresu
Przedstawione makro dzia a poprawnie ale zakresy komoacuterek mo na kopiowa w znaczniebardziej efektywny sposoacuteb Identyczny rezultat mo esz osi gn za pomoc proceduryktoacutera sk ada si z tylko jednego wiersza polecenia i nie zaznacza adnych komoacuterek(dzi ki czemu nie wymaga ustawiania w a ciwo ci CutCopyMode na warto False)
Sub CopyRange2() Range(A1A5)Copy Range(B1)End Sub
Procedura przedstawiona powy ej korzysta z tego e metoda Copy mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe kopiowanego zakresu Informacje o tymznalaz em w pomocy systemowej VBA Powy szy przyk ad doskonale roacutewnie ilustrujefakt e rejestrator makr nie zawsze generuje najbardziej efektywny kod
Kopiowanie zakresu o zmiennej wielko ciW wielu przypadkach konieczne jest skopiowanie zakresu komoacuterek dla ktoacuterego dok adnaliczba wierszy i kolumn okre laj cych jego wielko nie jest z goacutery znana Przyk adowomo esz dysponowa skoroszytem ledz cym tygodniow sprzeda w ktoacuterym liczba wierszyzmienia si ka dego tygodnia po wprowadzeniu nowych danych
Na rysunku 141 przedstawiam przyk ad cz sto spotykanego typu arkusza Znajduj cysi w nim zakres komoacuterek sk ada si z kilku wierszy ktoacuterych liczba zmienia si ka degodnia Poniewa nie wiesz jaki jest rozmiar zakresu w danej chwili musisz utworzykod ktoacutery b dzie dzia a bez u ywania adresu zakresu kopiowanych komoacuterek
Rysunek 141Przyk ad zakre-su ktoacutery mo e
sk ada siz dowolnej
liczby wierszy
Makro przedstawione poni ej ilustruje sposoacuteb kopiowania zakresu komoacuterek z arkuszaArkusz1 do arkusza Arkusz2 (pocz wszy od komoacuterki A1) Makro wykorzystuje w a ciwoCurrentRegion ktoacutera zwraca obiekt Range odpowiadaj cy blokowi komoacuterek otaczaj cychokre lon komoacuterk (w tym przypadku o adresie A1)
Kup książkę Poleć książkę
220 Cz III Podstawy programowania
Sub CopyCurrentRegion() Range(A1)CurrentRegionCopy Sheets(Arkusz2)Select Range(A1)Select ActiveSheetPaste Sheets(Arkusz1)Select ApplicationCutCopyMode = FalseEnd Sub
Zastosowanie w a ciwo ci CurrentRegion jest roacutewnowa ne z przej ciem na kartNARZ DZIA G OacuteWNE i wybraniem polecenia Znajd i zaznaczPrzejd do mdashspecjalnie znajduj cego si w grupie opcji Edytowanie i nast pnie zaznaczeniem opcjiBie cy obszar Aby przekona si jak to dzia a podczas wykonywania tych polecepowiniene u y rejestratora makr Zazwyczaj warto w a ciwo ci CurrentRegionreprezentuje prostok tny blok komoacuterek otoczony przez puste wiersze i kolumny
Oczywi cie mo esz zoptymalizowa kod makra przedstawionego powy ej i niezaznacza obszaru docelowego dla kopiowanych komoacuterek Makro przedstawione poni ejkorzysta z faktu e metoda Copy mo e u ywa argumentu wywo ania reprezentuj cegomiejsce docelowe kopiowanego zakresu
Sub CopyCurrentRegion2() Range(A1)CurrentRegionCopy _ Sheets(Arkusz2)Range(A1)End Sub
Je eli zakres komoacuterek ktoacutery chcesz skopiowa jest tabel (zdefiniowan przy u yciapolecenia WSTAWIANIETabeleTabela) ca e zadanie b dzie jeszcze atwiejsze Ka databela posiada swoj nazw (na przyk ad Tabela1) i automatycznie rozszerza si w miardodawania nowych wierszy
Sub CopyTable() Range(Tabela1)Copy Sheets(Arkusz2)Range(A1)End Sub
Je eli sproacutebujesz wykona procedur przedstawion powy ej przekonasz si e wiersznag oacutewka tabeli nie jest kopiowany poniewa obiekt Tabela1 nie obejmuje tegowiersza Je li chcesz aby wiersz nag oacutewka roacutewnie by kopiowany powiniene zmieniodwo anie do tabeli tak jak to zosta o przedstawione poni ej
Range(Tabela1[All])
Zaznaczanie komoacuterekdo ko ca wiersza lub kolumnyPrawdopodobnie bardzo cz sto u ywasz kombinacji klawiszy takich jak Ctrl+Shift+ czy Ctrl+Shift+ do zaznaczania zakresoacutew sk adaj cych si ze wszystkich komoacuterekod komoacuterki aktywnej a do ko ca kolumny czy wiersza Nie jest wi c chyba zaskoczenieme mo esz napisa makro ktoacutere b dzie zaznacza komoacuterki w podobny sposoacuteb
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 221
Do zaznaczania ca ego bloku komoacuterek mo esz u y w a ciwo ci CurrentRegion Ale copowiniene zrobi je eli chcesz zaznaczy powiedzmy tylko jedn kolumn z tegobloku komoacuterek Na szcz cie VBA pozwala na wykonywanie takich operacji Proceduraktoacuterej kod przedstawiam poni ej zaznacza zakres komoacuterek pocz wszy od bie cejaktywnej komoacuterki w doacute kolumny a do komoacuterki znajduj cej si o jeden wiersz powy ejpierwszej pustej komoacuterki tej kolumny Po zaznaczeniu zakresu mo esz przetwarza gow dowolny sposoacuteb mdash kopiowa komoacuterki przenosi je w inne miejsce arkusza zmieniaformatowanie i tak dalej
Sub SelectDown() Range(ActiveCell ActiveCellEnd(xlDown))SelectEnd Sub
Oczywi cie taki sam obszar mo esz roacutewnie zaznaczy r cznie Aby to zrobi powinienezaznaczy pierwsz komoacuterk nast pnie wcisn i przytrzyma klawisz Shift nacisnklawisz End i wreszcie nacisn klawisz (strza ka w doacute )
W przyk adzie wykorzystuj metod End obiektu ActiveCell ktoacutera zwraca obiekt typuRange Metoda End pobiera jeden argument okre laj cy kierunek w ktoacuterym zostaniewykonane zaznaczenie Argumentami tej metody mo e by dowolna ze sta ychprzedstawionych poni ej
xlUp
xlDown
xlToLeft
xlToRight
Pami taj e zaznaczanie zakresu nie jest potrzebne do jego przetwarzania Makroprzedstawione poni ej zmienia czcionk w komoacuterkach zmiennego zakresu (pojedynczakolumna) na pogrubion bez uprzedniego zaznaczenia zakresu
Sub MakeBold() Range(ActiveCell ActiveCellEnd(xlDown)) _ FontBold = TrueEnd Sub
Zaznaczanie ca ego wiersza lub ca ej kolumnyProcedura przedstawiona poni ej ilustruje sposoacuteb zaznaczania kolumny w ktoacuterej znajdujesi aktywna komoacuterka Makro wykorzystuje w a ciwo EntireColumn ktoacutera zwracaobiekt typu Range reprezentuj cy ca kolumn
Sub SelectColumn() ActiveCellEntireColumnSelectEnd Sub
Jak pewnie si spodziewasz w j zyku VBA dost pna jest roacutewnie w a ciwo EntireRowktoacutera zwraca obiekt typu Range reprezentuj cy ca y wiersz
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
218 Cz III Podstawy programowania
Rejestrator makr nie zawsze b dzie w stanie wygenerowa optymalny kod VBABardzo cz sto jednak mo esz za jego pomoc utworzy bazowe makro i potemodpowiednio zmodyfikowa kod tak aby sta si bardziej efektywny
Zazwyczaj bardzo dobrym rozwi zaniem jest nadawanie nazw zakresom komoacuterekwykorzystywanym w kodzie VBA Przyk adowo polecenie Range(Total)jestznacznie lepszym rozwi zaniem ni Range(D45) Je li w tym drugim przypadkupoacute niej wstawisz dodatkowy wiersz powy ej wiersza 45 to eby wszystko dzia a opoprawnie b dziesz musia zmodyfikowa makro tak aby korzysta o z nowegopoprawnego adresu komoacuterki a ta po wykonaniu takiej operacji b dzie mia a innyadres (D46) Aby nada nazw wybranemu zakresowi komoacuterek powiniene przejna kart FORMU Y i wybra polecenie Definiuj nazw znajduj ce si w grupiepolece Nazwy zdefiniowane
Kiedy tworzysz makro ktoacutere b dzie przetwarza o zakres komoacuterek zaznaczonyprzez u ytkownika pami taj e u ytkownik mo e zaznaczy kilka ca ych kolumnczy wierszy W wi kszo ci przypadkoacutew z pewno ci nie b dziesz chcia aby makrow p tli przechodzi o w takiej sytuacji przez wszystkie zaznaczone komoacuterki (w czniez pustymi) co mog oby zaj bardzo wiele czasu Dobre makro powinno odszukai przetwarza tylko komoacuterki ktoacutere nie s puste
Excel pozwala na jednoczesne zaznaczanie wielu zakresoacutew komoacuterek Aby to zrobi powiniene zaznaczy pierwszy zakres komoacuterek potem wcisn i przytrzymaklawisz Ctrl i zaznacza kolejne zakresy komoacuterek przy u yciu myszy Kod Twojejaplikacji powinien by przygotowany na takie sytuacje i podejmowa odpowiednieakcje
Skoroszyty z wybranymi przyk adami omawianymi w tym rozdziale znajdziesz na stronieinternetowej naszej ksi ki
Je eli chcesz samodzielnie wpisywa kod omawianych przyk adoacutew przejd do edytoraVBE naciskaj c kombinacj klawiszy lewyAlt+F11 a nast pnie wstaw nowy modu VBAi wpisz kod prezentowanych procedur Upewnij si e Twoacutej skoroszyt jest poprawnieskonfigurowany Je eli na przyk ad kod danego przyk adu odwo uje si do arkuszyo nazwach Arkusz1 i Arkusz2 upewnij si e takie arkusze istniej w Twoim skoroszycie
Kopiowanie zakresoacutewKopiowanie zakresoacutew komoacuterek mo e mia o pretendowa do miana jednej z najcz ciejwykonywanych operacji w Excelu Kiedy w czysz rejestrator makr i skopiujesz zakreskomoacuterek o adresie A1A5 do zakresu B1B5 otrzymasz nast puj ce makro
Sub CopyRange() Range(A1A5)Select SelectionCopy Range(B1)Select ActiveSheetPaste ApplicationCutCopyMode = FalseEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 219
Zwroacute uwag na ostatnie polecenie Zosta o ono wygenerowane przez naci ni cieklawisza Esc po skopiowaniu zakresu komoacuterek co spowodowa o usuni cie przerywanejlinii reprezentuj cej na arkuszu obramowanie kopiowanego zakresu
Przedstawione makro dzia a poprawnie ale zakresy komoacuterek mo na kopiowa w znaczniebardziej efektywny sposoacuteb Identyczny rezultat mo esz osi gn za pomoc proceduryktoacutera sk ada si z tylko jednego wiersza polecenia i nie zaznacza adnych komoacuterek(dzi ki czemu nie wymaga ustawiania w a ciwo ci CutCopyMode na warto False)
Sub CopyRange2() Range(A1A5)Copy Range(B1)End Sub
Procedura przedstawiona powy ej korzysta z tego e metoda Copy mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe kopiowanego zakresu Informacje o tymznalaz em w pomocy systemowej VBA Powy szy przyk ad doskonale roacutewnie ilustrujefakt e rejestrator makr nie zawsze generuje najbardziej efektywny kod
Kopiowanie zakresu o zmiennej wielko ciW wielu przypadkach konieczne jest skopiowanie zakresu komoacuterek dla ktoacuterego dok adnaliczba wierszy i kolumn okre laj cych jego wielko nie jest z goacutery znana Przyk adowomo esz dysponowa skoroszytem ledz cym tygodniow sprzeda w ktoacuterym liczba wierszyzmienia si ka dego tygodnia po wprowadzeniu nowych danych
Na rysunku 141 przedstawiam przyk ad cz sto spotykanego typu arkusza Znajduj cysi w nim zakres komoacuterek sk ada si z kilku wierszy ktoacuterych liczba zmienia si ka degodnia Poniewa nie wiesz jaki jest rozmiar zakresu w danej chwili musisz utworzykod ktoacutery b dzie dzia a bez u ywania adresu zakresu kopiowanych komoacuterek
Rysunek 141Przyk ad zakre-su ktoacutery mo e
sk ada siz dowolnej
liczby wierszy
Makro przedstawione poni ej ilustruje sposoacuteb kopiowania zakresu komoacuterek z arkuszaArkusz1 do arkusza Arkusz2 (pocz wszy od komoacuterki A1) Makro wykorzystuje w a ciwoCurrentRegion ktoacutera zwraca obiekt Range odpowiadaj cy blokowi komoacuterek otaczaj cychokre lon komoacuterk (w tym przypadku o adresie A1)
Kup książkę Poleć książkę
220 Cz III Podstawy programowania
Sub CopyCurrentRegion() Range(A1)CurrentRegionCopy Sheets(Arkusz2)Select Range(A1)Select ActiveSheetPaste Sheets(Arkusz1)Select ApplicationCutCopyMode = FalseEnd Sub
Zastosowanie w a ciwo ci CurrentRegion jest roacutewnowa ne z przej ciem na kartNARZ DZIA G OacuteWNE i wybraniem polecenia Znajd i zaznaczPrzejd do mdashspecjalnie znajduj cego si w grupie opcji Edytowanie i nast pnie zaznaczeniem opcjiBie cy obszar Aby przekona si jak to dzia a podczas wykonywania tych polecepowiniene u y rejestratora makr Zazwyczaj warto w a ciwo ci CurrentRegionreprezentuje prostok tny blok komoacuterek otoczony przez puste wiersze i kolumny
Oczywi cie mo esz zoptymalizowa kod makra przedstawionego powy ej i niezaznacza obszaru docelowego dla kopiowanych komoacuterek Makro przedstawione poni ejkorzysta z faktu e metoda Copy mo e u ywa argumentu wywo ania reprezentuj cegomiejsce docelowe kopiowanego zakresu
Sub CopyCurrentRegion2() Range(A1)CurrentRegionCopy _ Sheets(Arkusz2)Range(A1)End Sub
Je eli zakres komoacuterek ktoacutery chcesz skopiowa jest tabel (zdefiniowan przy u yciapolecenia WSTAWIANIETabeleTabela) ca e zadanie b dzie jeszcze atwiejsze Ka databela posiada swoj nazw (na przyk ad Tabela1) i automatycznie rozszerza si w miardodawania nowych wierszy
Sub CopyTable() Range(Tabela1)Copy Sheets(Arkusz2)Range(A1)End Sub
Je eli sproacutebujesz wykona procedur przedstawion powy ej przekonasz si e wiersznag oacutewka tabeli nie jest kopiowany poniewa obiekt Tabela1 nie obejmuje tegowiersza Je li chcesz aby wiersz nag oacutewka roacutewnie by kopiowany powiniene zmieniodwo anie do tabeli tak jak to zosta o przedstawione poni ej
Range(Tabela1[All])
Zaznaczanie komoacuterekdo ko ca wiersza lub kolumnyPrawdopodobnie bardzo cz sto u ywasz kombinacji klawiszy takich jak Ctrl+Shift+ czy Ctrl+Shift+ do zaznaczania zakresoacutew sk adaj cych si ze wszystkich komoacuterekod komoacuterki aktywnej a do ko ca kolumny czy wiersza Nie jest wi c chyba zaskoczenieme mo esz napisa makro ktoacutere b dzie zaznacza komoacuterki w podobny sposoacuteb
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 221
Do zaznaczania ca ego bloku komoacuterek mo esz u y w a ciwo ci CurrentRegion Ale copowiniene zrobi je eli chcesz zaznaczy powiedzmy tylko jedn kolumn z tegobloku komoacuterek Na szcz cie VBA pozwala na wykonywanie takich operacji Proceduraktoacuterej kod przedstawiam poni ej zaznacza zakres komoacuterek pocz wszy od bie cejaktywnej komoacuterki w doacute kolumny a do komoacuterki znajduj cej si o jeden wiersz powy ejpierwszej pustej komoacuterki tej kolumny Po zaznaczeniu zakresu mo esz przetwarza gow dowolny sposoacuteb mdash kopiowa komoacuterki przenosi je w inne miejsce arkusza zmieniaformatowanie i tak dalej
Sub SelectDown() Range(ActiveCell ActiveCellEnd(xlDown))SelectEnd Sub
Oczywi cie taki sam obszar mo esz roacutewnie zaznaczy r cznie Aby to zrobi powinienezaznaczy pierwsz komoacuterk nast pnie wcisn i przytrzyma klawisz Shift nacisnklawisz End i wreszcie nacisn klawisz (strza ka w doacute )
W przyk adzie wykorzystuj metod End obiektu ActiveCell ktoacutera zwraca obiekt typuRange Metoda End pobiera jeden argument okre laj cy kierunek w ktoacuterym zostaniewykonane zaznaczenie Argumentami tej metody mo e by dowolna ze sta ychprzedstawionych poni ej
xlUp
xlDown
xlToLeft
xlToRight
Pami taj e zaznaczanie zakresu nie jest potrzebne do jego przetwarzania Makroprzedstawione poni ej zmienia czcionk w komoacuterkach zmiennego zakresu (pojedynczakolumna) na pogrubion bez uprzedniego zaznaczenia zakresu
Sub MakeBold() Range(ActiveCell ActiveCellEnd(xlDown)) _ FontBold = TrueEnd Sub
Zaznaczanie ca ego wiersza lub ca ej kolumnyProcedura przedstawiona poni ej ilustruje sposoacuteb zaznaczania kolumny w ktoacuterej znajdujesi aktywna komoacuterka Makro wykorzystuje w a ciwo EntireColumn ktoacutera zwracaobiekt typu Range reprezentuj cy ca kolumn
Sub SelectColumn() ActiveCellEntireColumnSelectEnd Sub
Jak pewnie si spodziewasz w j zyku VBA dost pna jest roacutewnie w a ciwo EntireRowktoacutera zwraca obiekt typu Range reprezentuj cy ca y wiersz
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 219
Zwroacute uwag na ostatnie polecenie Zosta o ono wygenerowane przez naci ni cieklawisza Esc po skopiowaniu zakresu komoacuterek co spowodowa o usuni cie przerywanejlinii reprezentuj cej na arkuszu obramowanie kopiowanego zakresu
Przedstawione makro dzia a poprawnie ale zakresy komoacuterek mo na kopiowa w znaczniebardziej efektywny sposoacuteb Identyczny rezultat mo esz osi gn za pomoc proceduryktoacutera sk ada si z tylko jednego wiersza polecenia i nie zaznacza adnych komoacuterek(dzi ki czemu nie wymaga ustawiania w a ciwo ci CutCopyMode na warto False)
Sub CopyRange2() Range(A1A5)Copy Range(B1)End Sub
Procedura przedstawiona powy ej korzysta z tego e metoda Copy mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe kopiowanego zakresu Informacje o tymznalaz em w pomocy systemowej VBA Powy szy przyk ad doskonale roacutewnie ilustrujefakt e rejestrator makr nie zawsze generuje najbardziej efektywny kod
Kopiowanie zakresu o zmiennej wielko ciW wielu przypadkach konieczne jest skopiowanie zakresu komoacuterek dla ktoacuterego dok adnaliczba wierszy i kolumn okre laj cych jego wielko nie jest z goacutery znana Przyk adowomo esz dysponowa skoroszytem ledz cym tygodniow sprzeda w ktoacuterym liczba wierszyzmienia si ka dego tygodnia po wprowadzeniu nowych danych
Na rysunku 141 przedstawiam przyk ad cz sto spotykanego typu arkusza Znajduj cysi w nim zakres komoacuterek sk ada si z kilku wierszy ktoacuterych liczba zmienia si ka degodnia Poniewa nie wiesz jaki jest rozmiar zakresu w danej chwili musisz utworzykod ktoacutery b dzie dzia a bez u ywania adresu zakresu kopiowanych komoacuterek
Rysunek 141Przyk ad zakre-su ktoacutery mo e
sk ada siz dowolnej
liczby wierszy
Makro przedstawione poni ej ilustruje sposoacuteb kopiowania zakresu komoacuterek z arkuszaArkusz1 do arkusza Arkusz2 (pocz wszy od komoacuterki A1) Makro wykorzystuje w a ciwoCurrentRegion ktoacutera zwraca obiekt Range odpowiadaj cy blokowi komoacuterek otaczaj cychokre lon komoacuterk (w tym przypadku o adresie A1)
Kup książkę Poleć książkę
220 Cz III Podstawy programowania
Sub CopyCurrentRegion() Range(A1)CurrentRegionCopy Sheets(Arkusz2)Select Range(A1)Select ActiveSheetPaste Sheets(Arkusz1)Select ApplicationCutCopyMode = FalseEnd Sub
Zastosowanie w a ciwo ci CurrentRegion jest roacutewnowa ne z przej ciem na kartNARZ DZIA G OacuteWNE i wybraniem polecenia Znajd i zaznaczPrzejd do mdashspecjalnie znajduj cego si w grupie opcji Edytowanie i nast pnie zaznaczeniem opcjiBie cy obszar Aby przekona si jak to dzia a podczas wykonywania tych polecepowiniene u y rejestratora makr Zazwyczaj warto w a ciwo ci CurrentRegionreprezentuje prostok tny blok komoacuterek otoczony przez puste wiersze i kolumny
Oczywi cie mo esz zoptymalizowa kod makra przedstawionego powy ej i niezaznacza obszaru docelowego dla kopiowanych komoacuterek Makro przedstawione poni ejkorzysta z faktu e metoda Copy mo e u ywa argumentu wywo ania reprezentuj cegomiejsce docelowe kopiowanego zakresu
Sub CopyCurrentRegion2() Range(A1)CurrentRegionCopy _ Sheets(Arkusz2)Range(A1)End Sub
Je eli zakres komoacuterek ktoacutery chcesz skopiowa jest tabel (zdefiniowan przy u yciapolecenia WSTAWIANIETabeleTabela) ca e zadanie b dzie jeszcze atwiejsze Ka databela posiada swoj nazw (na przyk ad Tabela1) i automatycznie rozszerza si w miardodawania nowych wierszy
Sub CopyTable() Range(Tabela1)Copy Sheets(Arkusz2)Range(A1)End Sub
Je eli sproacutebujesz wykona procedur przedstawion powy ej przekonasz si e wiersznag oacutewka tabeli nie jest kopiowany poniewa obiekt Tabela1 nie obejmuje tegowiersza Je li chcesz aby wiersz nag oacutewka roacutewnie by kopiowany powiniene zmieniodwo anie do tabeli tak jak to zosta o przedstawione poni ej
Range(Tabela1[All])
Zaznaczanie komoacuterekdo ko ca wiersza lub kolumnyPrawdopodobnie bardzo cz sto u ywasz kombinacji klawiszy takich jak Ctrl+Shift+ czy Ctrl+Shift+ do zaznaczania zakresoacutew sk adaj cych si ze wszystkich komoacuterekod komoacuterki aktywnej a do ko ca kolumny czy wiersza Nie jest wi c chyba zaskoczenieme mo esz napisa makro ktoacutere b dzie zaznacza komoacuterki w podobny sposoacuteb
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 221
Do zaznaczania ca ego bloku komoacuterek mo esz u y w a ciwo ci CurrentRegion Ale copowiniene zrobi je eli chcesz zaznaczy powiedzmy tylko jedn kolumn z tegobloku komoacuterek Na szcz cie VBA pozwala na wykonywanie takich operacji Proceduraktoacuterej kod przedstawiam poni ej zaznacza zakres komoacuterek pocz wszy od bie cejaktywnej komoacuterki w doacute kolumny a do komoacuterki znajduj cej si o jeden wiersz powy ejpierwszej pustej komoacuterki tej kolumny Po zaznaczeniu zakresu mo esz przetwarza gow dowolny sposoacuteb mdash kopiowa komoacuterki przenosi je w inne miejsce arkusza zmieniaformatowanie i tak dalej
Sub SelectDown() Range(ActiveCell ActiveCellEnd(xlDown))SelectEnd Sub
Oczywi cie taki sam obszar mo esz roacutewnie zaznaczy r cznie Aby to zrobi powinienezaznaczy pierwsz komoacuterk nast pnie wcisn i przytrzyma klawisz Shift nacisnklawisz End i wreszcie nacisn klawisz (strza ka w doacute )
W przyk adzie wykorzystuj metod End obiektu ActiveCell ktoacutera zwraca obiekt typuRange Metoda End pobiera jeden argument okre laj cy kierunek w ktoacuterym zostaniewykonane zaznaczenie Argumentami tej metody mo e by dowolna ze sta ychprzedstawionych poni ej
xlUp
xlDown
xlToLeft
xlToRight
Pami taj e zaznaczanie zakresu nie jest potrzebne do jego przetwarzania Makroprzedstawione poni ej zmienia czcionk w komoacuterkach zmiennego zakresu (pojedynczakolumna) na pogrubion bez uprzedniego zaznaczenia zakresu
Sub MakeBold() Range(ActiveCell ActiveCellEnd(xlDown)) _ FontBold = TrueEnd Sub
Zaznaczanie ca ego wiersza lub ca ej kolumnyProcedura przedstawiona poni ej ilustruje sposoacuteb zaznaczania kolumny w ktoacuterej znajdujesi aktywna komoacuterka Makro wykorzystuje w a ciwo EntireColumn ktoacutera zwracaobiekt typu Range reprezentuj cy ca kolumn
Sub SelectColumn() ActiveCellEntireColumnSelectEnd Sub
Jak pewnie si spodziewasz w j zyku VBA dost pna jest roacutewnie w a ciwo EntireRowktoacutera zwraca obiekt typu Range reprezentuj cy ca y wiersz
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
220 Cz III Podstawy programowania
Sub CopyCurrentRegion() Range(A1)CurrentRegionCopy Sheets(Arkusz2)Select Range(A1)Select ActiveSheetPaste Sheets(Arkusz1)Select ApplicationCutCopyMode = FalseEnd Sub
Zastosowanie w a ciwo ci CurrentRegion jest roacutewnowa ne z przej ciem na kartNARZ DZIA G OacuteWNE i wybraniem polecenia Znajd i zaznaczPrzejd do mdashspecjalnie znajduj cego si w grupie opcji Edytowanie i nast pnie zaznaczeniem opcjiBie cy obszar Aby przekona si jak to dzia a podczas wykonywania tych polecepowiniene u y rejestratora makr Zazwyczaj warto w a ciwo ci CurrentRegionreprezentuje prostok tny blok komoacuterek otoczony przez puste wiersze i kolumny
Oczywi cie mo esz zoptymalizowa kod makra przedstawionego powy ej i niezaznacza obszaru docelowego dla kopiowanych komoacuterek Makro przedstawione poni ejkorzysta z faktu e metoda Copy mo e u ywa argumentu wywo ania reprezentuj cegomiejsce docelowe kopiowanego zakresu
Sub CopyCurrentRegion2() Range(A1)CurrentRegionCopy _ Sheets(Arkusz2)Range(A1)End Sub
Je eli zakres komoacuterek ktoacutery chcesz skopiowa jest tabel (zdefiniowan przy u yciapolecenia WSTAWIANIETabeleTabela) ca e zadanie b dzie jeszcze atwiejsze Ka databela posiada swoj nazw (na przyk ad Tabela1) i automatycznie rozszerza si w miardodawania nowych wierszy
Sub CopyTable() Range(Tabela1)Copy Sheets(Arkusz2)Range(A1)End Sub
Je eli sproacutebujesz wykona procedur przedstawion powy ej przekonasz si e wiersznag oacutewka tabeli nie jest kopiowany poniewa obiekt Tabela1 nie obejmuje tegowiersza Je li chcesz aby wiersz nag oacutewka roacutewnie by kopiowany powiniene zmieniodwo anie do tabeli tak jak to zosta o przedstawione poni ej
Range(Tabela1[All])
Zaznaczanie komoacuterekdo ko ca wiersza lub kolumnyPrawdopodobnie bardzo cz sto u ywasz kombinacji klawiszy takich jak Ctrl+Shift+ czy Ctrl+Shift+ do zaznaczania zakresoacutew sk adaj cych si ze wszystkich komoacuterekod komoacuterki aktywnej a do ko ca kolumny czy wiersza Nie jest wi c chyba zaskoczenieme mo esz napisa makro ktoacutere b dzie zaznacza komoacuterki w podobny sposoacuteb
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 221
Do zaznaczania ca ego bloku komoacuterek mo esz u y w a ciwo ci CurrentRegion Ale copowiniene zrobi je eli chcesz zaznaczy powiedzmy tylko jedn kolumn z tegobloku komoacuterek Na szcz cie VBA pozwala na wykonywanie takich operacji Proceduraktoacuterej kod przedstawiam poni ej zaznacza zakres komoacuterek pocz wszy od bie cejaktywnej komoacuterki w doacute kolumny a do komoacuterki znajduj cej si o jeden wiersz powy ejpierwszej pustej komoacuterki tej kolumny Po zaznaczeniu zakresu mo esz przetwarza gow dowolny sposoacuteb mdash kopiowa komoacuterki przenosi je w inne miejsce arkusza zmieniaformatowanie i tak dalej
Sub SelectDown() Range(ActiveCell ActiveCellEnd(xlDown))SelectEnd Sub
Oczywi cie taki sam obszar mo esz roacutewnie zaznaczy r cznie Aby to zrobi powinienezaznaczy pierwsz komoacuterk nast pnie wcisn i przytrzyma klawisz Shift nacisnklawisz End i wreszcie nacisn klawisz (strza ka w doacute )
W przyk adzie wykorzystuj metod End obiektu ActiveCell ktoacutera zwraca obiekt typuRange Metoda End pobiera jeden argument okre laj cy kierunek w ktoacuterym zostaniewykonane zaznaczenie Argumentami tej metody mo e by dowolna ze sta ychprzedstawionych poni ej
xlUp
xlDown
xlToLeft
xlToRight
Pami taj e zaznaczanie zakresu nie jest potrzebne do jego przetwarzania Makroprzedstawione poni ej zmienia czcionk w komoacuterkach zmiennego zakresu (pojedynczakolumna) na pogrubion bez uprzedniego zaznaczenia zakresu
Sub MakeBold() Range(ActiveCell ActiveCellEnd(xlDown)) _ FontBold = TrueEnd Sub
Zaznaczanie ca ego wiersza lub ca ej kolumnyProcedura przedstawiona poni ej ilustruje sposoacuteb zaznaczania kolumny w ktoacuterej znajdujesi aktywna komoacuterka Makro wykorzystuje w a ciwo EntireColumn ktoacutera zwracaobiekt typu Range reprezentuj cy ca kolumn
Sub SelectColumn() ActiveCellEntireColumnSelectEnd Sub
Jak pewnie si spodziewasz w j zyku VBA dost pna jest roacutewnie w a ciwo EntireRowktoacutera zwraca obiekt typu Range reprezentuj cy ca y wiersz
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 221
Do zaznaczania ca ego bloku komoacuterek mo esz u y w a ciwo ci CurrentRegion Ale copowiniene zrobi je eli chcesz zaznaczy powiedzmy tylko jedn kolumn z tegobloku komoacuterek Na szcz cie VBA pozwala na wykonywanie takich operacji Proceduraktoacuterej kod przedstawiam poni ej zaznacza zakres komoacuterek pocz wszy od bie cejaktywnej komoacuterki w doacute kolumny a do komoacuterki znajduj cej si o jeden wiersz powy ejpierwszej pustej komoacuterki tej kolumny Po zaznaczeniu zakresu mo esz przetwarza gow dowolny sposoacuteb mdash kopiowa komoacuterki przenosi je w inne miejsce arkusza zmieniaformatowanie i tak dalej
Sub SelectDown() Range(ActiveCell ActiveCellEnd(xlDown))SelectEnd Sub
Oczywi cie taki sam obszar mo esz roacutewnie zaznaczy r cznie Aby to zrobi powinienezaznaczy pierwsz komoacuterk nast pnie wcisn i przytrzyma klawisz Shift nacisnklawisz End i wreszcie nacisn klawisz (strza ka w doacute )
W przyk adzie wykorzystuj metod End obiektu ActiveCell ktoacutera zwraca obiekt typuRange Metoda End pobiera jeden argument okre laj cy kierunek w ktoacuterym zostaniewykonane zaznaczenie Argumentami tej metody mo e by dowolna ze sta ychprzedstawionych poni ej
xlUp
xlDown
xlToLeft
xlToRight
Pami taj e zaznaczanie zakresu nie jest potrzebne do jego przetwarzania Makroprzedstawione poni ej zmienia czcionk w komoacuterkach zmiennego zakresu (pojedynczakolumna) na pogrubion bez uprzedniego zaznaczenia zakresu
Sub MakeBold() Range(ActiveCell ActiveCellEnd(xlDown)) _ FontBold = TrueEnd Sub
Zaznaczanie ca ego wiersza lub ca ej kolumnyProcedura przedstawiona poni ej ilustruje sposoacuteb zaznaczania kolumny w ktoacuterej znajdujesi aktywna komoacuterka Makro wykorzystuje w a ciwo EntireColumn ktoacutera zwracaobiekt typu Range reprezentuj cy ca kolumn
Sub SelectColumn() ActiveCellEntireColumnSelectEnd Sub
Jak pewnie si spodziewasz w j zyku VBA dost pna jest roacutewnie w a ciwo EntireRowktoacutera zwraca obiekt typu Range reprezentuj cy ca y wiersz
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
222 Cz III Podstawy programowania
Przenoszenie zakresoacutewZazwyczaj aby przenie zakres komoacuterek zaznaczasz go wycinasz do schowka systemowegoi nast pnie wklejasz w inne miejsce Je eli u yjesz rejestratora makr do zapisania takiejoperacji przekonasz si e wygenerowany zostanie kod podobny do przedstawionegoponi ej
Sub MoveRange() Range(A1C6)Select SelectionCut Range(A10)Select ActiveSheetPasteEnd Sub
Podobnie jak podczas kopiowania komoacuterek takie rozwi zanie nie jest najbardziejefektywnym sposobem przenoszenia zakresu komoacuterek w inne miejsce W praktyce takoperacj mo esz wykona za pomoc procedury sk adaj cej si z jednego wiersza koduco prezentuj poni ej
Sub MoveRange2() Range(A1C6)Cut Range(A10)End Sub
Makro przedstawione powy ej korzysta z faktu e metoda Cut mo e u ywa argumentuwywo ania reprezentuj cego miejsce docelowe przenoszonego zakresu Zwroacute roacutewnieuwag na fakt e podczas przenoszenia aden zakres komoacuterek nie jest zaznaczanyWska nik aktywnej komoacuterki przez ca y czas pozostaje w tym samym miejscu arkusza
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tliJednym z zada cz sto wykonywanych przez makra jest sprawdzanie poszczegoacutelnychkomoacuterek zakresu i wykonywanie okre lonych operacji na podstawie ich zawarto ci Takiemakra zazwyczaj wykorzystuj p tl For-Next za pomoc ktoacuterej przetwarzane s komoacuterkizakresu
Przyk ad przedstawiony ni ej ilustruje sposoacuteb przechodzenia kolejno przez wszystkiekomoacuterki danego zakresu W naszym przypadku przetwarzany jest aktualnie zaznaczonyzakres komoacuterek Zmienna obiektowa o nazwie Cell reprezentuje aktualnie przetwarzankomoacuterk W p tli For Each-Next znajduje si jedno polecenie ktoacutere sprawdza aktualnieprzetwarzan komoacuterk i zmienia jej czcionk na pogrubion je eli warto przechowywanaw komoacuterce jest dodatnia
Sub ProcessCells() Dim Cell As Range For Each Cell In Selection If CellValue gt 0 Then CellFontBold = True Next CellEnd Sub
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 223
Taka procedura dzia a poprawnie ale co si stanie je eli u ytkownik zaznaczy cakolumn lub ca y wiersz To wcale nie jest takie nieprawdopodobne bo przecie Excelpozwala na wykonywanie operacji na ca ych wierszach i kolumnach W takiej sytuacjiwykonanie makra mo e zaj naprawd du o czasu poniewa nasza p tla przetwarzaka d komoacuterk zaznaczonego zakresu a cznie z pustymi w jednej kolumnie komoacuterekjest a 1 048 576hellip Aby zatem nasze makro by o bardziej wydajne musimy je takzmodyfikowa eby przetwarzane by y tylko i wy cznie komoacuterki ktoacutere nie s puste
Procedura przedstawiona poni ej przetwarza wy cznie niepuste komoacuterki zaznaczonegozakresu dzi ki zastosowaniu metody SpecialCells (wi cej szczegoacute owych informacji natemat tej metody znajdziesz w pomocy systemowej VBA) Nasza procedura za pomocpolecenia Set tworzy dwa obiekty typu Range pierwszy z nich to podzakres komoacuterekzakresu wej ciowego zawieraj cy wy cznie komoacuterki z warto ciami sta ymi (na przyk adteksty warto ci liczbowe litera y i tak dalej) a drugi sk ada si z komoacuterek zawieraj cychformu y Procedura przetwarza tylko komoacuterki nale ce do tych podzakresoacutew co w efekciepowoduje pomini cie przetwarzania wszystkich pozosta ych pustych komoacuterek zakresuwej ciowego Sprytne prawda
Sub SkipBlanks() Dim ConstantCells As Range Dim FormulaCells As Range Dim cell As Range Ignoruj b dy On Error Resume Next
Przetwarzaj komoacuterki zawieraj ce warto ci sta e Set ConstantCells = Selection _ SpecialCells(xlConstants) For Each cell In ConstantCells If cellValue gt 0 Then cellFontBold = True End If Next cell
Przetwarzaj komoacuterki zawieraj ce formu y Set FormulaCells = Selection _ SpecialCells(xlFormulas) For Each cell In FormulaCells If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Procedura SkipBlanks dzia a tak samo szybko niezale nie od tego jaki zakres komoacuterekzaznaczy e Mo esz na przyk ad zaznaczy zakres sk adaj cy si z kilku komoacuterek zaznaczywszystkie kolumny w danym zakresie albo wszystkie wiersze w danym zakresie albonawet ca y arkusz Jak wida jest to ogromne usprawnienie w stosunku do oryginalnejprocedury ProcessCells ktoacuter omoacutewi em nieco wcze niej
Zwroacute uwag e w kodzie procedury u yli my polecenia
On Error Resume Next
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
224 Cz III Podstawy programowania
Polecenie to powoduje e Excel po prostu ignoruje b dy (inaczej moacutewi c je eli proacutebawykonania danego polecenia ko czy si b dem Excel ignoruje ten b d i po prostuprzechodzi do kolejnego polecenia wi cej szczegoacute owych informacji na temat obs ugib doacutew znajdziesz w rozdziale 12) W naszym przypadku zastosowanie polecenia OnError jest konieczne poniewa metoda SpecialCells generuje b d gdy adna komoacuterkanie spe nia podanego kryterium
Zastosowanie metody SpecialCells jest roacutewnowa ne z przej ciem na kart NARZ DZIAG OacuteWNE wybraniem polecenia Znajd i zaznaczPrzejd do mdash specjalnie znajduj cegosi w grupie opcji Edytowanie i nast pnie zaznaczeniem opcji Sta e lub Formu y Abyprzekona si jak to dzia a podczas wykonywania tych polece powiniene u yrejestratora makr i zaznacza roacute ne opcje
Wydajne przetwarzanie komoacuterekzaznaczonego zakresu przy u yciu p tli(cz II)A teraz ci g dalszy naszej opowie ci W tym punkcie przedstawi inny sposoacuteb efektywnegoprzetwarzania komoacuterek znajduj cych si w zaznaczonym zakresie Tym razem procedurab dzie korzysta a z w a ciwo ci UsedRange ktoacutera zwraca obiekt typu Range reprezentuj cyu ywany zakres arkusza Procedura korzysta roacutewnie z metody Intersect ktoacutera zwracaobiekt typu Range zawieraj cy komoacuterki b d ce cz ci wspoacuteln dwoacutech zakresoacutew
Poni ej przedstawiam zmodyfikowan wersj procedury SkipBlanks omawianejw poprzednim punkcie
Sub SkipBlanks2() Dim WorkRange As Range Dim cell As Range Set WorkRange = Intersect(Selection ActiveSheetUsedRange) For Each cell In WorkRange If cellValue gt 0 Then cellFontBold = True End If Next cellEnd Sub
Zmienna obiektowa WorkRange zawiera komoacuterki ktoacutere s cz ci wspoacuteln zakresuzaznaczonego przez u ytkownika oraz zakresu u ywanych komoacuterek arkusza Je lizatem u ytkownik zaznaczy ca kolumn zmienna WorkRange b dzie zawiera a tylkokomoacuterki ktoacutere znajduj si jednocze nie w zaznaczonej kolumnie i w u ywanymzakresie arkusza Jak wida jest to bardzo szybka i efektywna metoda pozwalaj ca naunikni cie przetwarzania komoacuterek znajduj cych si poza zakresem u ywanychkomoacuterek arkusza
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 225
Wprowadzanie warto ci do komoacuterkiNa rysunku 142 pokazuj w jaki sposoacuteb mo esz u y funkcji InputBox j zyka VBA dopobierania od u ytkownika warto ci ktoacutera nast pnie mo e zosta zapisana w wybranejkomoacuterce W procedurze przedstawionej poni ej demonstruj jak poprosi u ytkownikao podanie warto ci i wstawi j do komoacuterki A1 aktywnego arkusza (i to wszystkoza pomoc jednego polecenia)
Sub GetValue() Range(A1)Value = InputBox( _ Wprowad warto dla komoacuterki A1)End Sub
Rysunek 142Zastosowaniefunkcji Input-
Box do pobie-rania warto ci
od u ytkownika
Przedstawiona procedura mo e jednak sprawia pewien problem Je eli u ytkowniknaci nie w oknie dialogowym przycisk Cancel procedura usunie wszelkie dane juznajduj ce si w komoacuterce A1 a takie zachowanie nie jest zbyt dobr praktyk programistyczn Naci ni cie przycisku Cancel powinno po prostu usuwa z ekranu okno dialogowe bezwykonywania adnych dodatkowych operacji
Makro przedstawione poni ej ilustruje znacznie lepsze podej cie do takiego zagadnieniai do zapami tania warto ci wprowadzonej przez u ytkownika wykorzystuje zmienn xJe eli zmienna zawiera co innego ni pusty ci g znakoacutew (czyli kiedy u ytkownikwprowadzi jak warto ) warto zmiennej jest zapisywana w komoacuterce A1 W przeciwnymprzypadku procedura ko czy dzia anie nie wykonuj c adnych dodatkowych operacji
Sub GetValue2() Dim x as Variant x = InputBox(Wprowad warto dla komoacuterki A1) If x ltgt Then Range(A1)Value = xEnd Sub
Zmienna x zosta a zdefiniowana jako zmienna typu Variant poniewa jej warto cimo e by warto albo pusty ci g znakoacutew (je eli u ytkownik naci nie przycisk Cancel)
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
226 Cz III Podstawy programowania
Okre lanie typu zaznaczonego zakresuJe eli zadaniem Twojego makra b dzie przetwarzanie zaznaczonego zakresu takiemakro musi mie zdolno sprawdzenia czy przed jego wywo aniem u ytkownikrzeczywi cie zaznaczy zakres komoacuterek W przeciwnym razie je eli przed wywo aniemmakra zaznaczony zostanie inny obiekt (na przyk ad wykres lub kszta t) proacuteba wykonaniamakra najprawdopodobniej zako czy si niepowodzeniem Polecenie przedstawioneponi ej wykorzystuje funkcj TypeName j zyka VBA do wy wietlania na ekranie typuaktualnie zaznaczonego obiektu
MsgBox TypeName(Selection)
Je eli aktualnie zaznaczony jest obiekt typu Range wykonanie takiego polecenia spowodujewy wietlenie s owa Range Je li Twoje makro dzia a tylko z zakresami komoacuterek mo eszu y polecenia If do sprawdzenia czy aktualnie zaznaczony obiekt to zakres (obiekttypu Range) Procedura przedstawiona poni ej sprawdza typ zaznaczonego obiektui je eli nie jest to obiekt typu Range na ekranie wy wietlany jest odpowiedni komunikati procedura ko czy dzia anie
Sub CheckSelection() If TypeName(Selection) ltgt Range Then MsgBox Zaznacz zakres komoacuterek Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Identyfikowanie zaznacze wielokrotnychJak pami tasz Excel pozwala na jednoczesne zaznaczanie wielu obiektoacutew Aby to zrobi powiniene podczas zaznaczania obiektoacutew lub zakresoacutew trzyma wci ni ty klawisz CtrlZaznaczenia wielokrotne mog by przyczyn problemoacutew z wykonywaniem niektoacuterychmakr Przyk adowo nie mo esz skopiowa zakresu komoacuterek ktoacutery zosta utworzonypoprzez wiele zaznacze nieci g ych zakresoacutew komoacuterek Je eli sproacutebujesz wykonatak operacj Excel wy wietli na ekranie komunikat przedstawiony na rysunku 143
Makro przedstawione ni ej pokazuje w jaki sposoacuteb mo esz sprawdzi czy u ytkownikdokona zaznaczenia wielokrotnego i na tej podstawie wykona odpowiedni operacj
Sub MultipleSelection() If SelectionAreasCount gt 1 Then MsgBox Zaznaczenia wielokrotne nie s dozwolone Exit Sub End If hellip [Tutaj wstaw dalsz cz kodu procedury]End Sub
Przedstawiona procedura wykorzystuje metod Areas ktoacutera zwraca kolekcj wszystkichzakresoacutew w danym zaznaczeniu W a ciwo Count zwraca liczb obiektoacutew tej kolekcji
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 227
Rysunek 143Excel nie lubi
kiedy proacutebujeszkopiowa nie-ci g e zakresy
komoacuterek
Zmiana ustawie ExcelaChyba najbardziej u ytecznymi makrami s proste procedury ktoacutere zmieniaj jednolub kilka ustawie Excela Je li na przyk ad dojdziesz do wniosku e bardzo cz stoprzywo ujesz na ekran okno opcji programu Excel i zmieniasz jakie ustawienie takaoperacja z pewno ci b dzie bardzo dobrym kandydatem do napisania makraoszcz dzaj cego Twoacutej czas i u atwiaj cego zmian takiego ustawienia
W tym podrozdziale zaprezentuj dwa przyk ady procedur ktoacutere pokazuj w jakisposoacuteb mo na zmienia ustawienia Excela Ogoacutelne zasady dzia ania tych procedurmo esz z powodzeniem zastosowa do napisania w asnych makr zmieniaj cych inneustawienia Excela
Zmiana ustawie logicznych(opcje typu Boolean)Podobnie jak wy cznik wiat a opcje logiczne (typu Boolean) mog by albo w czonealbo wy czone Mo esz na przyk ad utworzy makro ktoacutere b dzie w cza o lub wy cza owy wietlanie podzia u arkusza na strony Kiedy wydrukujesz arkusz (lub skorzystaszz trybu podgl du wydruku) Excel wy wietla na arkuszu przerywane linie reprezentuj cemiejsca podzia u arkusza na strony wydruku Niektoacuterych u ytkownikoacutew (w czniez autorem tej ksi ki) takie zachowanie Excela irytuje Niestety jedynym sposobemwy czenia wy wietlania podzia u arkusza na strony jest otwarcie okna dialogowego Opcjeprogramu Excel przej cie na kart Zaawansowane a nast pnie przewijanie zawarto ci tejkarty a do odszukania opcji Poka podzia y stron Je eli podczas wy czania tej opcjikorzysta e z rejestratora makr przekonasz si e Excel generuje poni szy kod
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
228 Cz III Podstawy programowania
ActiveSheetDisplayPageBreaks = False
Z drugiej strony je eli podczas rejestrowania makra podzia y stron nie s widoczneExcel generuje taki kod
ActiveSheetDisplayPageBreaks = True
Takie informacje mog doprowadzi do wniosku e b dziesz musia napisa a dwamakra mdash jedno do w czania podgl du podzia u stron a drugie do jego wy czaniaNa szcz cie to nieprawda Procedura przedstawiona poni ej wykorzystuje operatorNot do zmiany warto ci logicznej True na False i odwrotnie Wykonanie proceduryTogglePageBreaks to prosty sposoacuteb na cykliczne w czanie i wy czanie podgl du podzia ustron arkusza
Sub TogglePageBreaks() On Error Resume Next ActiveSheetDisplayPageBreaks = Not _ ActiveSheetDisplayPageBreaksEnd Sub
Pierwsze polecenie informuje Excel e powinien ignorowa ewentualne b dy Przyk adowopodzia y stron nie s wy wietlane na arkuszach wykresoacutew Kiedy wprowadzisz takiepolecenie i sproacutebujesz wykona t procedur dla arkusza wykresu na ekranie nie pojawisi komunikat o b dzie
Techniki u ytej w procedurze TogglePageBreaks mo esz u ywa do zmiany dowolnychopcji logicznych (czyli takich ktoacuterych warto ciami s True albo False)
Zmiana innych opcji (typu non-Boolean)Do zmiany opcji ktoacutere nie s typu logicznego mo esz u ywa konstrukcji Select CaseW przyk adzie przedstawionym poni ej zmieniam tryb przeliczania skoroszytu z r cznegona automatyczny i odwrotnie i nakazuj wy wietlenie na ekranie komunikatu opisuj cegoaktualny tryb przeliczania arkusza
Sub ToggleCalcMode() Select Case ApplicationCalculation Case xlManual ApplicationCalculation = xlCalculationAutomatic MsgBox Automatyczne przeliczanie skoroszytu Case xlAutomatic ApplicationCalculation = xlCalculationManual MsgBox R czne przeliczanie skoroszytu End SelectEnd Sub
Techniki u ytej w procedurze ToggleCalcMode mo esz u ywa do zmiany dowolnychopcji ktoacutere nie posiadaj warto ci logicznych
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 229
Praca z wykresamiWykresy w Excelu s wr cz prze adowane najroacute niejszymi obiektami st d ichprzetwarzanie za pomoc kodu VBA mo e by niez ym wyzwaniem
Uruchomi em Excel 2013 w zakresie komoacuterek A1A3 wpisa em kilka liczb i zaznaczy emten obszar arkusza Nast pnie w czy em rejestrator makr i dla tych trzech punktoacutewdanych utworzy em prosty wykres kolumnowy Poacute niej usun em wy wietlanie siatkiwykresu i zmieni em jego tytu Oto zarejestrowane makro
Sub Macro1() Zarejestrowane w Excelu 2013 ActiveSheetShapesAddChart2(201 xlColumnClustered)Select ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartSetElement (msoElementPrimaryValueGridLinesNone) ActiveChartChartTitleSelect ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Kiedy zobaczy em ten kod by em nieco zaskoczony poniewa nigdy wcze niej nies ysza em o metodzie AddChart2 Okaza o si e metoda AddChart2 to nowo ktoacuterazosta a wprowadzona w Excelu 2013 Je eli wykonasz podobn operacj z rejestrowaniemmakra w Excelu 2010 wynik b dzie nast puj cy
Sub Macro1() Zarejestrowane w Excelu 2010 ActiveSheetShapesAddChartSelect ActiveChartChartType = xlColumnClustered ActiveChartSetSourceData Source=Range(Arkusz1$A$1$A$3) ActiveChartAxes(xlValue)MajorGridlinesSelect SelectionDelete ActiveChartSetElement (msoElementChartTitleAboveChart) ActiveChartChartTitleText = To jest moacutej wykresEnd Sub
Co to wszystko oznacza Ano tyle e makra zarejestrowane w Excelu 2013 po prostu nieb d dzia a y w Excelu 2010 ale makra rejestrowane w Excelu 2010 dzia aj w Excelu 2013Innymi s owy makra Excela 2010 s kompatybilne w przoacuted (czyli zachowuj zgodnoz przysz ymi wersjami Excela forward compatibility) a makra Excela 2013 zosta y pozbawionekompatybilno ci wstecznej (backward compatibility) czyli nie zachowuj zgodno ciz poprzednimi wersjami
Przeci tny u ytkownik Excela 2013 prawdopodobnie nie wie nic na temat kompatybilno cimakr w odniesieniu do tworzenia wykresoacutew Je eli jednak udost pnisz takie makrokomu kto u ywa starszej wersji Excela bardzo szybko si o tym dowiesz WnioskiGdy u ywasz rejestratora makr do tworzenia makr przetwarzaj cych wykresy powinieneprzetestowa takie makra na wszystkich wersjach Excela ktoacutere b d wykorzystywanedo uruchamiania takiego makra
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
230 Cz III Podstawy programowania
Metoda AddChart kontra metoda AddChart2Poni ej przedstawiam oficjaln sk adni metody AddChart (metoda jest kompatybilnaz Excelem 2007 i wersjami poacute niejszymi)
AddChart(Type Left Top Width Height)
A oto sk adnia metody AddChart2 (ktoacutera jest kompatybilna wy cznie z Excelem 2013)
AddChart2 (Style XlChartType Left Top Width Height NewLayout)
Jak wida metoda AddChart2 pobiera kilka dodatkowych argumentoacutew ktoacutere okre laj stylwykresu typ wykresu oraz jego uk ad Z drugiej strony metoda AddChart tworzy poprostu pusty wykres a wszystkie detale musz by zdefiniowane za pomoc dodatkowychpolece
Analiza zarejestrowanego kodu ujawnia kilka rzeczy ktoacutere mog by pomocne podczastworzenia w asnych makr przetwarzaj cych wykresy Je eli jeste ciekawy rzu okiemna zmodyfikowan r cznie procedur ktoacuterej zadaniem jest utworzenie wykresu na baziezaznaczonego zakresu komoacuterek
Sub CreateAChart() Dim ChartData As Range Dim ChartShape As Shape Dim NewChart As Chart
Tworzenie zmiennych obiektowych Set ChartData = ActiveWindowRangeSelection Set ChartShape = ActiveSheetShapesAddChart Set NewChart = ChartShapeChart
With NewChart ChartType = xlColumnClustered SetSourceData Source=Range(ChartDataAddress) SetElement (msoElementLegendRight) SetElement (msoElementChartTitleAboveChart) ChartTitleText = To jest moacutej wykres End WithEnd Sub
To makro jest kompatybilne z Excelem 2007 i wersjami poacute niejszymi Makro tworzygrupowany wykres kolumnowy wraz z legend i tytu em Jest to podstawowa wersjamakra ktoacutera w atwy sposoacuteb mo e by dostosowana do Twoich indywidualnych wymaga Jednym ze sposoboacutew mo e by rejestrowanie makra podczas modyfikowania wykresui nast pnie u ywanie takiego kodu jako wzorca w swoich procedurach
Swoj drog dalej w tym rozdziale omoacutewi konstrukcj With End-With ktoacutera znakomicieu atwia prac z obiektami oszcz dza sporo bdquostukania w klawiatur rdquo i znakomicieprzyczynia si do zwi kszenia przejrzysto ci kodu
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 231
Je eli musisz napisa makro VBA ktoacuterego zadaniem b dzie przetwarzanie wykresoacutewmusisz zapozna si z kilkoma wa nymi okre leniami Wykres osadzony (embedded chart)na arkuszu to obiekt typu ChartObject Obiekt ChartObject mo esz aktywowa podobniejak aktywujesz arkusz Polecenie przedstawione poni ej aktywuje obiekt ChartObjecto nazwie Wykres 1
ActiveSheetChartObjects(Wykres 1)Activate
Po aktywowaniu danego wykresu mo esz si do niego odwo ywa w kodzie VBA zapomoc obiektu ActiveChart Je eli wykres znajduje si na osobnym arkuszu wykresustaje si wykresem aktywnym w chwili kiedy aktywujesz arkusz wykresu
Obiekt ChartObject jest roacutewnie obiektem typu Shape co mo e by nieco myl ceW rzeczywisto ci kiedy Twoacutej kod VBA tworzy wykres ca a operacja rozpoczyna siod utworzenia nowego obiektu Shape (kszta t) Wykres mo esz roacutewnie aktywowapoprzez zaznaczenie obiektu Shape przechowuj cego wykres
ActiveSheetShapes(Wykres 1)Select
W moich programach wol u ywa obiektu ChartObject dzi ki czemu nie mamadnych w tpliwo ci e pracuj z wykresami
Kiedy klikasz wykres osadzony lewym przyciskiem myszy Excel zaznacza obiekt znajduj cysi wewn trz obiektu ChartObject Je eli chcesz zaznaczy sam obiekt ChartObject powinieneklikaj c wykres trzyma wci ni ty klawisz Ctrl
Modyfikowanie typu wykresuA teraz przeczytasz zdanie ktoacutere mo e Ci nieco zdezorientowa obiekty ChartObjectspe niaj rol konteneroacutew dla obiektoacutew Chart Je li masz jakie w tpliwo ci powinieneto zdanie kilka razy spokojnie przeczyta i wtedy na pewno wszystko stanie si jasne
Aby zmodyfikowa wykres za pomoc VBA nie musisz tego wykresu aktywowa MetodaChart mo e zwraca wykres przechowywany w kontenerze ChartObject Nadal niejasneProcedury przedstawione poni ej daj taki sam efekt mdash zmieniaj typ wykresu o nazwieWykres 1 na wykres powierzchniowy Pierwsza procedura najpierw aktywuje wykresi nast pnie pracuje z aktywnym wykresem Druga procedura nie aktywuje wykresua zamiast tego wykorzystuje w a ciwo Chart ktoacutera zwraca obiekt Chart zawartyw kontenerze ChartObject
Sub ModifyChart1() ActiveSheetChartObjects(Wykres 1)Activate ActiveChartType = xlAreaEnd Sub
Sub ModifyChart2() ActiveSheetChartObjects(Wykres 1)ChartType = xlAreaEnd Sub
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
232 Cz III Podstawy programowania
Przechodzenie w p tliprzez elementy kolekcji ChartObjectsProcedura przedstawiona poni ej wprowadza zmiany do wszystkich wykresoacutewosadzonych na aktywnym arkuszu Procedura wykorzystuje p tl For Each-Nextdo przechodzenia kolejno przez wszystkie obiekty kolekcji ChartObjects i dla ka degoobiektu Chart zmienia jego w a ciwo Type
Sub ChartType() Dim cht As ChartObject For Each cht In ActiveSheetChartObjects chtChartType = xlArea Next chtEnd Sub
Makro przedstawione poni ej wykonuje tak sam operacj ale na wszystkich arkuszachwykresoacutew w aktywnym skoroszycie
Sub ChartType2() Dim cht As Chart For Each cht In ActiveWorkbookCharts chtType = xlArea Next chtEnd Sub
Modyfikowanie w a ciwo ci wykresuProcedura przedstawiona ni ej zmienia czcionk legendy wykresu dla wszystkichwykresoacutew osadzonych na aktywnym arkuszu Makro wykorzystuje p tl For-Nextdo przetwarzania wszystkich obiektoacutew ChartObject
Sub LegendMod() Dim chtObj As ChartObject For Each chtObj In ActiveSheetChartObjects With chtObjChartLegendFont Name = Calibri FontStyle = Bold Size = 12 End With Next chtObjEnd Sub
Zwroacute uwag na fakt e obiekt Font jest zawarty w obiekcie Legend ktoacutery jest zawartyw obiekcie Chart ktoacutery z kolei jest zawarty w kolekcji ChartObjects Czy teraz rozumieszdlaczego to wszystko jest nazywane hierarchi obiektoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 233
Zmiana formatowania wykresoacutewTen przyk ad odnosi si do kilku roacute nych typoacutew formatowania aktywnego wykresuUtworzy em to makro rejestruj c moje poczynania podczas formatowania wykresuNast pnie oczy ci em nieco uzyskany kod poprzez usuni cie zb dnych wierszy
Sub ChartMods() ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Przed wykonaniem tego makra musisz aktywowa wykres Wykresy osadzone mo eszaktywowa poprzez ich klikni cie lewym przyciskiem myszy Aby aktywowa wykresna arkuszu wykresu kliknij kart arkusza
Aby upewni si e wykres jest zaznaczony mo esz w kodzie procedury umie cipolecenie ktoacutere b dzie sprawdza o czy wykres jest aktywny Poni ej znajdziesz kodzmodyfikowanej procedury ktoacutera mdash je eli wykres nie jest aktywny mdash wy wietla naekranie odpowiedni komunikat i ko czy dzia anie
Sub ChartMods2() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If ActiveChartType = xlArea ActiveChartChartAreaFontName = Calibri ActiveChartChartAreaFontFontStyle = Regular ActiveChartChartAreaFontSize = 9 ActiveChartPlotAreaInteriorColorIndex = xlNone ActiveChartAxes(xlValue)TickLabelsFontBold = True ActiveChartAxes(xlCategory)TickLabelsFontBold = _ True ActiveChartLegendPosition = xlBottomEnd Sub
Poni ej znajdziesz kolejn wersj procedury ktoacutera wykorzystuje konstrukcj With-EndWith do zaoszcz dzenia bdquoklepaniardquo w klawiatur i (co wa niejsze) zwi kszenia optymalno cii przejrzysto ci kodu I znowu wyskakujemy nieco przed orkiestr ale je eli chcesz mo eszju teraz przeskoczy par stron do przodu i przeczyta opis polecenia With-End With
Sub ChartMods3() If ActiveChart Is Nothing Then MsgBox Aktywuj wykres Exit Sub End If
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
234 Cz III Podstawy programowania
With ActiveChart Type = xlArea ChartAreaFontName = Calibri ChartAreaFontFontStyle = Regular ChartAreaFontSize = 9 PlotAreaInteriorColorIndex = xlNone Axes(xlValue)TickLabelsFontBold = True Axes(xlCategory)TickLabelsFontBold = True LegendPosition = xlBottom End WithEnd Sub
No coacute hellip w zakresie zastosowania VBA do przetwarzania wykresoacutew uda o Ci si w tymrozdziale jedynie nieco bdquolizn rdquo podstawowe elementy tego rozbudowanego zagadnieniaTemat jest niezwykle szeroki ale mam nadziej e to czego dowiedzia e si w tymrozdziale pobudzi o Twoj ciekawo i nakierowa o poszukiwania we w a ciwymkierunku
Jak przyspieszy dzia anie kodu VBAVBA jest szybki ale nie zawsze wystarczaj co szybki (inna sprawa e programykomputerowe nigdy nie s wystarczaj co szybkie przynajmniej w opinii wi kszo ciu ytkownikoacutew) W tym podrozdziale poka kilka trikoacutew i sztuczek ktoacutere b dzieszmoacuteg wykorzysta do przyspieszenia dzia ania swoich makr
Wy czanie aktualizacji ekranuKiedy uruchomisz makro mo esz wygodnie wyci gn si na fotelu i ze spokojemobserwowa na ekranie jego post py Cho takie post powanie mo e by do pewnegoczasu ciekawe to jednak kiedy makro zostanie ju napisane i przetestowane wy wietlaniebie cych wynikoacutew dzia ania mo e by irytuj ce i niepotrzebnie zwalnia dzia aniemakra Na szcz cie Excel pozwala na wy czenie aktualizacji ekranu na czas dzia aniamakra co mo e znacz co przyspieszy jego dzia anie Aby wy czy aktualizacj ekranupowiniene u y polecenia
ApplicationScreenUpdating = False
Je eli chcesz aby u ytkownicy widzieli co si dzieje na ekranie podczas dzia aniamakra powiniene w czy aktualizacj ekranu za pomoc polecenia
ApplicationScreenUpdating = True
Aby zademonstrowa roacute nic w szybko ci dzia ania powiniene uruchomi makroprzedstawione poni ej ktoacuterego zadaniem jest wype nianie liczbami du ego zakresukomoacuterek
Sub FillRange() Dim r as Long c As Long Dim Number as Long
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 235
Number = 0 For r = 1 To 50 For c = 1 To 50 Number = Number + 1 Cells(r c)Select Cells(r c)Value = Number Next c Next rEnd Sub
Procedura zaznacza ka d komoacuterk zakresu i wpisuje do niej kolejn liczb Teraz napocz tku procedury wstaw polecenie przedstawione poni ej i ponownie uruchomprocedur
ApplicationScreenUpdating = False
Z pewno ci zauwa y e e zakres zosta wype niony znacznie szybciej a rezultaty nieby y widoczne na ekranie a do zako czenia dzia ania procedury i automatycznegoprzywroacutecenia aktualizacji ekranu
Kiedy pracujesz nad testowaniem procedury i wyszukiwaniem b doacutew w kodzie dzia anieprogramu mo e nagle zosta przerwane bez automatycznego przywroacutecenia aktualizacjiekranu (tak te mi si to zdarzahellip) W takiej sytuacji okno Excela pozostaje bdquomartwerdquoi wydaje si e program nie reaguje na Twoje pro by i gro by Rozwi zanie tego problemujest proste mdash przejd do okna edytora VBE i w oknie Immediate wpisz polecenie
ApplicationScreenUpdating = True
Wy czenie automatycznegoprzeliczania skoroszytuZa oacute my e masz skoroszyt zawieraj cy wiele z o onych formu Mo esz znacz coprzyspieszy dzia anie makra je eli na czas jego realizacji prze czysz Excel w trybr cznego przeliczania skoroszytu Kiedy makro zako czy dzia anie powiniene ponownieprze czy Excel w tryb automatycznego przeliczania skoroszytu
Polecenie przedstawione poni ej prze cza Excel w tryb r cznego przeliczania skoroszytu
ApplicationCalculation = xlCalculationManual
Aby przywroacuteci tryb automatycznego przeliczania skoroszytu u yj polecenia
ApplicationCalculation = xlCalculationAutomatic
Je eli kod VBA Twojego makra wykorzystuje wyniki dzia ania formu arkuszowychpami taj e prze czenie Excela w tryb r cznego przeliczania arkusza oznacza i warto cikomoacuterek nie zostan zaktualizowane a do momentu kiedy jawnie nie bdquopoprosiszrdquoExcela aby to zrobi
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
236 Cz III Podstawy programowania
Wy czanie irytuj cych ostrze eJak wiesz makra mog automatycznie wykonywa ca e mnoacutestwo roacute nych operacji W wieluprzypadkach mo esz po prostu uruchomi makro i spokojnie wybra si do kuchnii zaparzy fili ank swojej ulubionej kawy Jednak niektoacutere operacje wykonywane przezExcel mog spowodowa wy wietlenie na ekranie komunikatu ktoacuterego potwierdzeniewymaga interakcji ze strony u ytkownika Je li na przyk ad Twoje makro proacutebuje usunarkusz na ktoacuterym znajduj si niepuste komoacuterki dzia anie makra zostanie automatyczniezatrzymane na ekranie pojawi si komunikat przedstawiony na rysunku 144 i Excelb dzie oczekiwa na Twoj reakcj Obecno tego typu komunikatoacutew oznacza e niemo esz pozostawi Excela bez nadzoru na czas dzia ania makrahellip dopoacuteki nie poznaszpewnego triku
Rysunek 144Mo esz naka-za Excelowizawieszenie
wy wietlaniatakich komuni-katoacutew podczasdzia ania makra
Oto ca a sztuczka aby unikn wy wietlania takich komunikatoacutew z ostrze eniamiw kodzie procedury VBA umie polecenie
ApplicationDisplayAlerts = False
Excel wykonuje domy lne operacje dla tego typu komunikatoacutew Podczas usuwaniaarkusza domy ln operacj jest Delete (co w a nie przed chwil zobaczy e ) Je eli niejeste pewien jaka operacja jest domy lna przeprowad test i przekonaj si sam
Kiedy procedura ko czy dzia anie Excel automatycznie nada w a ciwo ci DisplayAlertswarto True (czyli przywroacuteci jej normalny stan) Je eli chcesz przywroacuteci wy wietlaniekomunikatoacutew przed zako czeniem dzia ania procedury powiniene u y w kodziepolecenia
ApplicationDisplayAlerts = True
Upraszczanie odwo a do obiektoacutewJak ju sam zd y e si zorientowa odwo ania do obiektoacutew mog by bardzorozbudowane Przyk adowo pe ne kwalifikowane odwo anie do obiektu Range mo ewygl da nast puj co
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Rozdzia 14 Przyk ady i techniki programowania w j zyku VBA 237
Je eli Twoje makro cz sto korzysta z takiego zakresu powiniene rozwa y utworzeniezmiennej obiektowej za pomoc polecenia Set Przyk adowo polecenie przedstawioneponi ej przypisuje obiekt Range do zmiennej obiektowej o nazwie Rate
Set Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Po zdefiniowaniu zmiennej obiektowej mo esz zamiast d ugiego odwo ania u ywanowo utworzonej zmiennej obiektowej Aby na przyk ad zmieni warto komoacuterkio nazwie StawkaProwizji mo esz u y polecenia
RateValue = 085
Jak wida jest to znacznie atwiejsze do wpisania (i zrozumienia) ni to samo poleceniew pe nej postaci
Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)Value = 085
Oproacutecz upraszczania kodu zastosowanie zmiennych obiektowych powoduje roacutewnieznaczne zwi kszenie szybko ci dzia ania kodu Twojego makra Wiele razy widzia emju makra ktoacutere po utworzeniu zmiennych obiektowych zwi kszy y szybko dzia anianawet dwukrotnie
Deklarowanie typoacutew zmiennychZazwyczaj nie musisz si martwi o typ danych ktoacutery przypisujesz do zmiennej Excelpotrafi si tym doskonale zaj Je eli masz zmienn o nazwie MyVar mo esz do niejprzypisa dowoln liczb a poacute niej w dalszej cz ci procedury mo esz do tej samejzmiennej przypisa na przyk ad ci g tekstu
Je eli chcesz aby Twoje procedury VBA dzia a y tak szybko jak to tylko mo liwe (i abyprzy okazji unikn kilku potencjalnych i naprawd paskudnych problemoacutew) powinienezawsze poinformowa Excel o tym jakie typy danych b d przypisywane do poszczegoacutelnychzmiennych Takie post powanie jest nazywane deklarowaniem typoacutew zmiennych (wi cejszczegoacute owych informacji na ten temat znajdziesz w rozdziale 7) Powiniene jaknajszybciej wyrobi sobie nawyk deklarowania wszystkich zmiennych ktoacuterych u ywaszw swoich programach
Ogoacutelnie rzecz bior c powiniene zawsze u ywa takich typoacutew danych ktoacutere wystarczdo obs ugi Twoich danych przy wykorzystaniu jak najmniejszej liczby bajtoacutew pami ciKiedy VBA przetwarza dane szybko dzia ania programu zale y od liczby bajtoacutew jakieVBA ma do bdquoprzerobieniardquo Innymi s owy im mniej bajtoacutew zajmuj dane tym szybciejVBA mo e je przetwarza Wyj tkiem od tej regu y s dane typu Integer mdash je eliszybko dzia ania programu jest czynnikiem krytycznym powiniene zawsze stosowadane typu Long
Je eli u ywasz zmiennych obiektowych (takich jakie opisywa em w poprzednimpodrozdziale) mo esz zadeklarowa tak zmienn jako zmienn okre lonego typuobiektowego A oto przyk ad takiej deklaracji
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
238 Cz III Podstawy programowania
Dim Rate as RangeSet Rate = Workbooks(MoacutejSkoroszytxlsx)Worksheets(Arkusz1) _ Range(StawkaProwizji)
Zastosowanie struktury With-End WithCzy chcesz ustawi szereg w a ciwo ci wybranego obiektu Twoacutej kod b dzie dzia aznacznie szybciej gdy u yjesz struktury With-End With Dodatkow zalet zastosowaniatej struktury jest znaczne zwi kszenie czytelno ci kodu
Fragment kodu przedstawiony poni ej nie wykorzystuje struktury With-End With
SelectionHorizontalAlignment = xlCenterSelectionVerticalAlignment = xlCenterSelectionWrapText = TrueSelectionOrientation = 0SelectionShrinkToFit = FalseSelectionMergeCells = False
A teraz ten sam fragment kodu ale zapisany z u yciem struktury With-End With
With Selection HorizontalAlignment = xlCenter VerticalAlignment = xlCenter WrapText = True Orientation = 0 ShrinkToFit = False MergeCells = FalseEnd With
Je eli przedstawiona struktura wydaje Ci si znajoma jest tak prawdopodobnie dlategoe rejestrator makr u ywa struktury With-End With w ka dej sytuacji w ktoacuterej jest to mo liwe
a poza tym struktura taka pojawi a si ju wcze niej w kilku przyk adach w tym rozdziale
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
SkorowidzA
Add-In 34aplikacja
bezpiecze stwo 384jako niezale ny program 33oparta na makrach 32
arkusz 34aktywacja 180aktywny 169dodawanie 61nazwa 169okno kodu 180wykresu 72
Auto Data Tips 65Auto Indent 65Auto List Members 64 78 80 144 150Auto Quick Info 65Auto Syntax Check 64automatyzacja 30
Bbiblioteka obiektoacutew Patrz obiekt bibliotekaBie cy obszar 220blok
instrukcji jako komentarz 108tekstu 31
b d 76 146WARTO 352czasu wykonania 116eliminowanie 215graniczny 204ignorowanie 197 199kod 144 146kompilacji 60 110komunikat 146 Patrz komunikat o b dzienumer 200obs uga 192 195 196 197 199
poprawianie Patrz odpluskwianieprogramowania 191 203 204 205
kontekstem operacji 204logiczny 204typ danych 204warunki graniczne 204wersja programu 204
przechwytywanie 195rozpoznawanie 200sk adni 64 136 204Subscript out of range 376wykonania 191 196zakresu 127zamierzony 201
breakpoint Patrz punkt przerwania
CChart 34 70 71 231 232Charts 72ci g znakoacutew 142 147 249collection Patrz kolekcjaComment Block 108Custom UI Editor for Microsoft Office 325czas 147 186
systemowy 156zapis liczbowy 187zegarowy 119
czcionka 134
Ddane
kopiowanie 185poprawno 185tekstowe 118typ 82 107 110 237
b dy 204Boolean 111 134
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
390 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
danetyp
Byte 111Currency 111Date 111 119definiowanie 95domy lny 111Double 111Integer 111Long 111Object 111predefiniowany 111przydzia dynamiczny 110Single 111String 111Variant 111 132 134
wklejanie 185data 119 146 147
cz 146format 120kroacutetka 120obliczenia 146systemowa 146zamiana na liczb seryjn 146
debugger 216debugowanie Patrz odpluskwianieDefault to Full Module View 66deklaracja 58Deweloper 39dodatek 34 48 54 361 362 363
Analysis ToolPak 208 361 363bezpiecze stwo 369modyfikowanie 371obiekt UserForm 362opis 368otwieranie 363 369Power Utility Pak 361Solver 361tworzenie 32 364 365 369udost pnianie 370
Dostosowywanie Wst ki 256Drag-and-Drop Text Editing 66drzewo 53 54
Eedytor VBE Patrz VBEekran
aktualizacja 235 377wy czenie aktualizacji 234
element graficzny 261embedded chart Patrz wykres osadzonyetykieta 125 154Excel
ustawienia 227 228wersja 35 229 387
Ffolder
nazwa 146zaufany 23
formant 259 260 275ActiveX 88CheckBox 261 279ComboBox 261 280 303CommandButton 261 265 281dodawanie 276 277etykieta 278Frame 261 281 292grafika 278Image 261 282jakoo kontener 292klawisz skroacutetu 292kolejno tabulacji 291Label 261 283 287 310ListBox 261 283 284 303MultiPage 261 284 292 294 315 316nawigacja za pomoc klawiatury 291nazwa 264 278obiektu CommandBar 331 332OptionButton 261 267 276 280 285 309pozycja w oknie 278 289 290RefEdit 261 286rozmiar 278 290ScrollBar 261 286SpinButton 261 287 310TabStrip 261 288TextBox 261 288 296 310t o 278ToggleButton 261 289warto 278widoczno 278w a ciwo 261 262 277 278
Accelerator 278 279 285AutoSize 278 288BackColor 278BackStyle 278BeginGroup 332
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Skorowidz 391
BorderStyle 282BuiltIn 332Cancel 281Caption 278 282 332ControlSource 280 284 285 287 288Default 281Enabled 332FaceID 332GroupName 285Height 278IntegralHeight 284 288LargeChange 287Left 278ListCount 303ListIndex 303 305ListRows 280ListStyle 280 284Max 287MaxLength 288metody 303Min 287MultiLine 288MultiSelect 284 303 306Name 278OnAction 332Picture 278 282PictureSizeMode 282RowSource 280 284ScrollBars 289Selected 303SmallChange 287Style 280 285TextAlign 278 289ToolTipText 333Top 278Value 278 280 284 285 287 303Visible 278 332Width 278WordWrap 289zmiana 277
zaznaczanie 290format
XLA 362XLAM 362xlsm 45 376XLSM 362xlsx 45 376
formularz UserForm Patrz UserForm
formu a 134nazwa 44odpowiednik angielski 44tablicowa 355
funkcja 33 58 59 81 141 344Patrz te metodaAbs 146argument 82argumenty 345 349
opcjonalne 351opis 360
arkuszowa 343 358 375ograniczenia 344
Array 146bezargumentowa 346Choose 146Chr 146CurDir 146Date 142 146DateAdd 146DateDiff 146DatePart 146DateSerial 146DateValue 146Day 146Dir 146D 142dwuargumentowa 348Err 146Error 146Exp 146FileLen 143 146Fix 146Format 146GetOpenFilename 250GetSetting 146Hour 146InputBox 144 146 149 154 195 225 242
247 248 249argumenty 248pobranie liczby 249
InStr 146InStrRev 146Int 146IsArray 146IsDate 146IsEmpty 146IsError 146IsMissing 146
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
392 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
funkcjaIsNull 147IsNumeric 147 193jednoargumentowa 346LARGE 148LBound 147LCase 147 270Left 147Len 142 147MAX 148Mid 147MIN 148Minute 147MOD 122 151Month 147MonthName 143MsgBox 74 142 144 147 149 206 242 247
argumenty 242przyciski 245
nazwa 83 112Now 142 147opakowuj ca 353opis 358pasywna 344PMT 148Proper 270Replace 147RGB 135 147Right 147Rnd 147Second 147Shell 144 147Space 147Split 147Sqr 147StrConv 270String 147Time 142 147Timer 147TimeSerial 147TimeValue 147 187Trim 147tworzenie 31 345TypeName 144 147UBound 147UCase 147 257 270u ytkownika 141 151Val 147VLOOKUP 149
wbudowanaj zyka VBA 141 142 144podpowiedzi 144programu Excel 141 145 150 151
Weekday 147w asna Patrz funkcja u ytkownikawykrywanie b doacutew 352WYSZUKAJPIONOWO 149wy wietlanie informacji 65wywo anie z procedury Sub 352wywo ywanie 82 89 90Year 147ZWIELKIEJLITERY 270
Ggenerator liczb pseudolosowych 353godzina 146
d uga 120format 119
Graphical User Interface Patrz GUIGUI 259
Hhas o 54 362 369 376 384
Iidentyfikator zadania 144instrukcja
ElseIf 157Exit For 163Exit Sub 154GoTo 125 153 154 155If-Then Patrz struktura If-ThenOn Error 195 196 197On Error GoTo 197On Error Resume 197 198On Error Resume Next 189 197 199 215Option Explicit 60 64 112przypisania 120ReDim 124Resume 197 198Resume Next 197Step 163warunkowa 95
IntelliSense 64interfejs u ytkownika graficzny Patrz GUI
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Skorowidz 393
Jj zyk
makr 30programowania 30XLM 36XML 325
Kkarta
Deweloper 363 Patrz DeweloperDODATKI 329Plik 363zawieraj ca formanty 261
klawisz Esc 219kod
ANSI 146spaghetti 155
kolekcja 34 71Addins 361ChartObject 232CommandBars 330element 71metoda 77przegl danie 168Sheets Patrz Sheetszakresoacutew 226
kolor 135motywu 135RGB 147standardowy 135TintAndShade 135vbBlack 135vbBlue 135vbCyan 135vbGreen 135vbMagenta 135vbRed 135vbWhite 135vbYellow 135wype nienia 135
kolumny ukrywanie 61komentarz 44 107 108 216 385komoacuterka 73
adresu wprowadzanie 261format 185niepusta 223pusta 218
warto ci wprowadzanie 225zaznaczanie 219 221
ca ego wiersza 221ca ej kolumny 221do ko ca kolumny 220 377do ko ca wiersza 220
komunikato b dzie 146 174wymagaj cy potwierdzenia 236
komunikatem 147kontener 34kontrolka formularza 87 88kszta t 34 84 87 88
Lliczba
ca kowita 110cz ca kowita 146e 146formatowanie 132pseudolosowa 353rzeczywista 110warto bezwzgl dna 146
lista 261 303element 304 306rozwijana 261 280sortowanie 356
logarytm naturalny 146lokalizacja zaufana 23 46 47
a cuch znakoacutew 110 118 119 136 142 354o sta ej d ugo ci 119o zmiennej d ugo ci 119poroacutewnywanie 355
Mmakro 30 60 82 Patrz te procedura Sub
programbezpiecze stwo 45 47instrukcje nadmiarowe 44klawisz skroacutetu 100kod 42lista 63lokalizacja 101modyfikacja 44
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
394 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
makronazwa 100rejestrator 58 61 82 93 95 98 375
ograniczenia 95opcje 100wydajno 101 218
rejestrowanie 31 41 55 88 93 95w trybie odwo a bezwzgl dnych 96w trybie odwo a wzgl dnych 97
testowanie 272ustawienia 23 46
menu 331podr czne 329
Cell 335Excel 2003 338Excel 2013 336modyfikacja 334resetowanie 334wy czanie 337wy wietlanie 329
metoda 35 127 Patrz te funkcjaAdd 77AddChart 230AddChart2 229 230Areas 226argument 76Cells 129Clear 138ClearContents 76Copy 138 219Delete 139End 221ExecuteMso 255Export 318FileDialog 242GetOpenFilename 242 251
argumenty 251GetSaveAsFilename 242 253InputBox 242 249Intersect 224OnTime 187 188Paste 138SaveCopyAs 179Select 137SpecialCells 223 224 273
miesi c 143 147 355model obiektowy 34 69 110
modu 54 154Code 263dodawanie 55 94limit znakoacutew 58przewijanie w oknie 66sekcja Declarations 115tworzenie 57 58usuwanie 55
Nnarz dzie Object Browser Patrz Object Browser
Oobiekt 34 69
ActiveChart 231Addin 70Add-In Patrz Add-InApplication 34 70 72biblioteka 79Chart Patrz ChartChartObject 231CommandBar 329 330 338
formanty 331 332CommandBars 255Comment 70eksportowanie 56Err 200FileDialog 254hierarchia 34 69Hyperlink 70importowanie 56kontener Patrz kontenermetoda 74 76 80 Patrz metodaName 70numer indeksu 72odwo anie Patrz odwo anieokno Code 53PageSetup 70PivotTable 70 Patrz PivotTableRange 70 Patrz RangeShape 231Ten_skoroszyt 54UserForm 259VBProject 70Window 70w a ciwo Patrz w a ciwoWorkbook Patrz Workbook
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Skorowidz 395
Worksheet Patrz WorksheetWorksheetFunction 70 145wskazywanie 71zakresu Patrz Rangezdarzenie Patrz zdarzenie
Object Browser 78 79object-oriented programming Patrz
programowanie zorientowane obiektowoobs uga techniczna 33odpluskwianie 33 54 204 205 208 273
metody 205narz dzia 209
odwo aniebezwzgl dne 94 96 133do obiektu 236do zakresu 129 130jednoznaczne Patrz odwo anie pe nepe ne 73 74upraszczanie 73w pe ni kwalifikowane Patrz odwo anie pe newzgl dne 94 96 97 130
Office Compatibility Pack 37okno
dialogowe 241 253 258dostosowywanie 244pobieranie odpowiedzi 243u ytkownika Patrz UserFormwbudowane 242 254Wstawianie funkcji 358wy wietlanie 243
Immediate 84Properties 261Toolbox 260wprowadzania danych 146
OOP Patrz programowanie zorientowaneobiektowo
operator 121dodawania 121dzielenia 121dzielenia ca kowitego 121konkatenacji ci goacutew znakoacutew 121 122 207kropki 72 73Like 355logiczny
alternatywy 122alternatywy wykluczaj cej 122And 122Eqv 122Imp 122
implikacji 122koniunkcji 122negacji 122Not 122Or 122roacutewnowa no ci 122XoR 122
logiczny 122mno enia 121Mod 121 122 151modulo 121odejmowania 121pot gowania 121priorytet 122znaku roacutewno ci 109
Option Explicit 215 384
Ppasek
post pu zadania Patrz wska nikpost pu zadania
przewijania 261 286 289szybkiego dost pu 272
umieszczanie procedur 299 328p tla 95 162 Patrz te struktura
Do-Until 153 154 168Do-While 153 154 167For Each-Next 168 222 232For-Next 153 154 162 232
czas wykonania 165z instrukcj Exit For 163z instrukcj Step 163zagnie d ona 165
pierwiastek kwadratowy 147PivotTable 34plik
liczba bajtoacutew 146nazwa 146 250PERSONALXLSB 54 101cie ka 146
wielko 143pluskwa Patrz b d programowaniapodprogram 59Poka podzia y stron 227pokr t o 261 287 310pole
etykiety 261 283grupy 261 281
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
396 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
polekarty 261 288kombi 261 280listy 261 280 283 303obrazu 261 282opcji 261 285 296strony 261 284tekstowe 261 288 289 296 310wyboru 261 279zakresu 261 286
polecenieAdd Watch 213DebugPrint 208 384DisplayAlerts 236 378MsgBox 384On Error Resume Next 223Print 212Randomize 353Set 237
proceduraargumenty 82dysfunkcyjna 34Function Patrz funkcjaobs ugi b doacutew
wbudowana 196 197w asna 196
obs ugi zdarzenia 173 268aktywacja arkusza 180aktywacja skoroszytu 181Open 176tworzenie 173 175
obs uguj ce zdarzenie 300separator 66Sub 33 44 58 59 60 81 82 173
Patrz te makroargumenty 85 87nazwa 83 100skroacutet klawiszowy 41 47 86 87 271tworzenie 84uruchamianie 83uruchamianie bezpo rednie 85uruchamianie w oknie dialogowym
Makro 85uruchamianie z poziomu innych
procedur 89uruchamianie za pomoc przyciskoacutew
i kszta toacutew 87 88uruchamianie za pomoc skroacutetoacutew
klawiszowych 86
wywo anie Patrz procedura Subsubstandardowa 33udost pnienie u ytkownikowi 299uruchamianie 60wy wietlaj cea okno dialogowe 298
Procedure Separator 66program Patrz makro
wykonywalny 147wykonywanie krokowe 211 212wymuszanie zatrzymania 207
programowanieprzyk ady 217strukturalne 154zorientowane obiektowo 69
projekt 54przycisk 84 87 331
na pasku narz dzi Szybki dost p 31 84na Wst ce 31opcji 267polecenia 261 281polece 265prze cznika 261 289tworzenie 31wstawianie 87 88
pu apka Patrz punkt przerwaniapunkt przerwania 210 211 352
usuwanie 210wstawianie 209
RRange 34 73 127 129 138 217 226
metoda 137rata po yczki 148rejestr Windows 146rejestrator makr Patrz makro rejestratorRequire Variable Declaration 64Require Variable Definition 112RibbonX 321runtime error Patrz b d czasu wykonania
SSheets 72skoroszyt 34 54
dezaktywacja 183konwersja na plik dodatku 48kopia zapasowa 179
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Skorowidz 397
makr osobistych 47 54 101otwarty 201przekszta canie na dodatek 364 367testowanie 367tryb obliczania
automatyczny 118prze czanie 228r czny 118 235 377
XLSM 361zapisywanie 45zawieraj cy makro 45
skroacutet klawiszowy 86s owo kluczowe 109 112
Call 89Case 159Const 117Dim 109 113 119 123End 109End Function 82End Sub 82End With 103For 109Function 82Next 109Preserve 125Print 212Private 113Public 113 115 123Static 113Stop 210Sub 82 109With 103 109
sta a 107 117 244predefiniowana 118vbNewLine 207 377vbProperCase 270xlCalculationAutomatic 235xlCalculationManual 118 235xlCalculationSemiautomatic 118xlDown 377xlToLeft 377xlToRight 377xlUp 377zasi g 117
string Patrz a cuch znakoacutewstrona podgl d podzia u 227 228
struktura Patrz te p tlaEnd If 156For Each-Next 168 222 232If-Then 153 155 156 157 158 199If-Then-Else 154 155 156 157Select Case 153 154 159 228
zagnie d ona 160With-End With 233 238 377
suwak 261 286syntezator mowy 354system pomocy 53 78 379
formanty 279funkcje wbudowane 144zakres 129
Ttabela 146 147 220
kopiowanie 220nazwa 220przestawna 34wiersz nag oacutewka 220
tablica 107 123 132deklarowanie 123dynamiczna 124liczba elementoacutew 124wielowymiarowa 124
TintAndShade 135tryb Break 211 212 214
UUserForm 54 241 257 295
lista kontrolna 318niemodalne 315 316poprawno danych 302prowadnice 276testowanie 293 299 318tworzenie 258 259 264 265 318w a ciwo ci 261 262wykres 317wy wietlanie 263wy wietlanie na ekranie 270z wieloma kartami 315zamienniki 241
ustawienia regionalne 132
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
398 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
VVBA 29
fundamenty 33kod 53 56 57
kopiowanie 63lokalizacja 173 174optymalizacja 234 377 384wci cia 58 65 161 215 384
modu Patrz moduProject 43Project Explorer Patrz VBA Projectwady 33zalety 32
VBE 33 42 51 79funkcje 144menu podr czne 52okno 52
Code 53 56dokowanie 68Immediate 53 54 208 211 212Locals 214Project 53 54Watch 212 213
pasekmenu 52narz dzi Edit 66narz dzi Standard 53
rodowiska dostosowanie 63Tools Options 63 66 67 68uruchamianie 51wygl d 66
Visual Basic for Applications Patrz VBA
Wwarto
False 134Null 134True 134
watch expression Patrz wyra enie monitoruj cew ze
Forms 54Modules 54
wiersza ukrywanie 61wirus 22w a ciwo 74 80 127
Accelerator 268Address 131 133
Cells 129Color 135Column 133Columns 133Count 133CurrentRegion 219 221DisplayAlerts 169EntireRow 221Font 134Formula 136FormulaLocal 136HasFormula 134Interior 136IsAddin 361NumberFormat 137Offset 130Path 143Row 133Rows 133Text 132ThemeColor 135UsedRange 224Value 131Visible 169
Workbook 54 70 71 75Worksheet 34 70 71 127 138wrapper function Patrz funkcja opakowuj cawska nik post pu zadania 312Wst ka 84 255 321 333
dostosowywanie 321 324za pomoc kodu XML 324 329
wykres 34 72 229 230aktywowanie 233formatowanie 233na UserForm 317osadzony 231przetwarzanie 231w a ciwo ci modyfikowanie 232
wyra enie 120 147monitoruj ce 212 213
Zzabezpiecze ustawienia 23zakres 34
ca a kolumna 128 218ca y wiersz 128 218komoacuterek 34 137 217 261 307
jako argument funkcji 349
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
Skorowidz 399
kopiowanie 218nazwa 218nieci g y 226przenoszenie 222
nazwa 127nieci g y 128o zmiennej wielko ci kopiowanie 219okre lanie typu 226
zaznaczenie wielokrotne 226zdarzenie 77 84 171 173
Activate 172aktywacyjne 180BeforeClose 172 179BeforeDoubleClick 172 183BeforePrint 172BeforeRightClick 172 184BeforeSave 172 179 180Change 172 184Deactivate 172dotycz ce
arkusza 172 180 181 183skoroszytu 172 176 179 182
NewSheet 172niezwi zane z obiektami 186 188OnKey 189OnTime 186 187 188Open 172 176SelectionChange 172SheetActivate 172SheetBeforeDoubleClick 172SheetBeforeRightClick 172SheetChange 172SheetDeactivate 172SheetSelectionChange 172WindowActivate 172WindowDeactivate 172
zegar analogowy 188
zmienna 35 107 130 157czas ycia 116deklarowanie 111 112 215 237 383globalna 117licznikowa 162lokalna 114 116 214a cuchowa 119
nazwa 72 109niezainicjowana 146o zasi gu
jednego modu u 115 117jednej procedury Patrz zmienna lokalna
o zasi gu globalnym Patrz zmienna globalnaobiektowa 237 377przypisywanie warto ci 95publiczna Patrz zmienna globalnastatyczna 116tekstowa 377typ Patrz dane typusuwanie z pami ci 116zasi g 113 114
znakgt= 156 121 Patrz znak krzy ykaamp 121 331 121 121^ 121+ 121apostrofu 107cudzys owu 108 127 136cudzys owu podwoacutejnego 136dolara 133Esc 219kontynuacji wiersza 59 121 156 378kropki 72 73 119krzy yka 119amania wiersza 246
nawias 122 142przecinka 119roacutewno ci 77 109 121rednika 77 125
zapytania 212
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę
400 Excel 2013 PL Programowanie w VBA dla bystrzakoacutew
Kup książkę Poleć książkę