VBA – praca z makrami w Excelu
Transkrypt
VBA – praca z makrami w Excelu
VBA – praca z makrami w Excelu Dariusz Aksamit Wydział Fizyki Politechniki Warszawskiej Przedmiot „Programowanie w języku Visual Basic for Application” (VBA) Semestr zimowy 2016/2017 Opiekun przedmiotu: dr inż. Daniel Kikoła VBA – praca z makrami w Excelu 1. Jak odblokować używanie makr? To ustawienie spowoduje, że uruchomienie pliku z makrem wywoła taki komunikat: Każdorazowo będzie trzeba kliknąć „włącz zawartość” VBA – praca z makrami w Excelu 1. Jak odblokować używanie makr? 2. Jak zarejestrować makro? VBA – praca z makrami w Excelu 1. Jak odblokować używanie makr? 2. Jak zarejestrować makro? 3. Jak zapisać makro w pliku? Zapisz jako .xlsm – inaczej wszystko się usunie:p VBA – praca z makrami w Excelu 1. 2. 3. 4. Jak odblokować używanie makr? Jak zarejestrować makro? Jak zapisać makro w pliku? Jak dodać do wstążki zakładkę „Deweloper”? Prawy klik myszką gdziebądź VBA – praca z makrami w Excelu 1. 2. 3. 4. 5. Jak odblokować używanie makr? Jak zarejestrować makro? Jak zapisać makro w pliku? Jak dodać do wstążki zakładkę „Deweloper”? Jak ze wstążki Deweloper dostać się do kodu? VBA – praca z makrami w Excelu 1. 2. 3. 4. 5. Jak odblokować używanie makr? Jak zarejestrować makro? Jak zapisać makro w pliku? Jak dodać do wstążki zakładkę „Deweloper”? Jak ze wstążki Deweloper dostać się do kodu? Czyli można wygodnie przejść do tworzenia kodu!:) VBA – praca z makrami w Excelu: piszemy kod! 1. Jak definiować zmienne? Typ Rozmiar w pamięci Opis Zakres wartości Byte 1 bajt Wartości dodatnie 0 do 255 Dwie wartości True lub False 2 bajty wartości całkowite -32,768 do +32,767 Long 4 bajty wartości całkowite -2,147,483,648 do +2,147,483,647 Single 4 bajty Liczby rzeczywiste -3.4e38 do +3.4e38 Double 8 bajtów Liczby rzeczywiste -1.8e308 do +1.8e308 Boolean Integer Currency zależnie od systemu 8 bajtów Liczby rzeczywiste o stałej ilości miejsc po przecinku -922,337,203,685,477.5808 do +922,337,203,685,477.5807 Date 8 bajtów Typ przeznaczony dla dat 1 styczeń 100 to 31.gru.99 Object 4 bajty Wskaźnik na obiekt wskaźnik na dowolny obiekt Zestaw znaków o zmiennej długości Zmienny - Do 2 bilionów znaków String zależnie od zawartości VBA – praca z makrami w Excelu: piszemy kod! 1. Jak definiować zmienne? 2. Jak użyć gotowej funkcji Excela/VBA? 'mozna odwoływać się względnie - jeden w górę i trzy w prawo: ActiveCell.FormulaR1C1 = "=SEARCH(""-"",R[-1]C[3],0)" 'można odwoływać się bezwględnie, adresem: ActiveCell.Formula = "=SEARCH(""-"",G2,0)" 'mozna odwoływać się względnie - jeden w górę i trzy w prawo: ActiveCell.FormulaR1C1 = "=SEARCH(""-"",R[-1]C[3],0)" 'można odwoływać się bezwględnie, adresem: ActiveCell.Formula = "=SEARCH(""-"",G2,0)" 'można wpisać formułę w komórkę tak, żeby była formułą: ActiveCell.FormulaR1C1 = "=SEARCH(""-"",R[-1]C[3],0)" ActiveCell.Formula = "=SEARCH(""-"",G2,0)" 'można wpisać w komórkę bezpośrednio wynik działania funkcji: ActiveCell.Value = WorksheetFunction.Search("-", G2, 0) 'przy niektórych funkcjach prościej, bo są wbudowane w VBA: ActiveCell.Value = Left(G3, 5) 'mozna odwoływać się względnie - jeden w górę i trzy w prawo: ActiveCell.FormulaR1C1 = "=SEARCH(""-"",R[-1]C[3],0)" 'można odwoływać się bezwględnie, adresem: ActiveCell.Formula = "=SEARCH(""-"",G2,0)" 'można wpisać formułę w komórkę tak, żeby była formułą: ActiveCell.FormulaR1C1 = "=SEARCH(""-"",R[-1]C[3],0)" ActiveCell.Formula = "=SEARCH(""-"",G2,0)" 'można wpisać w komórkę bezpośrednio wynik działania funkcji: ActiveCell.Value = WorksheetFunction.Search("-", G2, 0) 'przy niektórych funkcjach prościej, bo są wbudowane w VBA: ActiveCell.Value = Left(G3, 5) Pisząc „VBA.” wyświetli nam się lista funkcji wbudowanych w VBA VBA – praca z makrami w Excelu: piszemy kod! 1. Jak definiować zmienne? 2. Jak użyć gotowej funkcji Excela/VBA? 3. Skąd wiedzieć jakie funkcje mam do wyboru? ActiveCell.FormulaR1C1 = Można zarejestrować makro, wpisując funkcje po polsku, otrzymamy „tłumaczenie”: "=SEARCH(""-"",RC[3],0)" "=LEFT(RC[1],1)" "=RIGHT(RC[1],5)" "=MID(RC[1],0,5)" "=VLOOKUP(RC[1],RC[2]:R[1]C[3],2,0)" "=CONCAT(RC[1],RC[2])" "=CONCATENATE(RC[1],RC[2])" "=LEN(RC[1])" "=IF(RC[1]=RC[2],""true"",""nieeee"")" "=IFNA(RC[1],RC[2])" "=MATCH(RC[1],RC[2]:R[1]C[3],0)" "=INDEX(RC[1]:R[2]C[2],2,3)" "=SWITCH(RC[1],RC[2],RC[3],)" "=ISNUMBER(RC[1])" Opis ze składnią: http://www.knf.pw.edu.pl/~aksamit/VBA/Funkcje_tekstowe_angielski.pdf Można zacząć pisać kod i nacisnąć ctr+spacja Można zacząć pisać kod i nacisnąć ctr+spacja Można zacząć pisać kod i nacisnąć ctr+spacja Po czym nacisnąć TAB Można zacząć pisać kod i nacisnąć ctr+spacja Po czym nacisnąć TAB Można zacząć pisać kod i nacisnąć ctr+spacja Po czym nacisnąć TAB A potem postawić kropkę (ewentualnie ponownie ctr+spacja i tab) Można zacząć pisać kod i nacisnąć ctr+spacja Po czym nacisnąć TAB A potem postawić kropkę (ewentualnie ponownie ctr+spacja i tab) Analogicznie – funkcje wbudowane w VBA: VBA – praca z makrami w Excelu: piszemy kod! 1. 2. 3. 4. Jak definiować zmienne? Jak użyć gotowej funkcji Excela/VBA? Skąd wiedzieć jakie funkcje mam do wyboru? Piszę kod – jak go uruchomić? 4.1 – dodając przycisk i przypisując do niego wybrane makro 4.2 – Widok-> Makra lub Deweloper->Makra lub alt+F8 4.2 – Widok-> Makra lub Deweloper->Makra lub alt+F8: wybierz makro i kliknij „Uruchom” 4.3 – w widoku kodu: na górze z lewej zielony przycisk „play” lub F5 4.3 – w widoku kodu: na górze z lewej zielony przycisk „play” lub F5 lub z menu „Run” 4.3 – w widoku kodu: na górze z lewej zielony przycisk „play” lub F5 lub z menu „Run” 4.4 – wybierając przypisany skrót klawiaturowy, np. „ctr+j” 4.5 – Przypisać makro do przycisku w UserFormie Ale o tym będzie za parę slajdów, jak dowiemy się co to UserForm VBA – praca z makrami w Excelu: piszemy kod! 1. 2. 3. 4. 5. Jak definiować zmienne? Jak użyć gotowej funkcji Excela/VBA? Skąd wiedzieć jakie funkcje mam do wyboru? Piszę kod – jak go uruchomić? Piszę kod – jak sprawdzić wartości zmiennych lub wykonać fragment? Lub kliknąć lewym myszki Teraz trzeba URUCHOMIĆ kod Najeżdżając myszką nad zmienną wyświetlimy jej wartość Najeżdżając myszką nad zmienną wyświetlimy jej wartość VBA – praca z makrami w Excelu: piszemy kod! 1. 2. 3. 4. 5. 6. Jak definiować zmienne? Jak użyć gotowej funkcji Excela/VBA? Skąd wiedzieć jakie funkcje mam do wyboru? Piszę kod – jak go uruchomić? Piszę kod – jak sprawdzić wartości zmiennych lub wykonać fragment? UserForm 6.1 – Jak zrobić UserForma? Prawy klik myszką 6.2 – Jakie mamy ikonki/opcje? 6.3 – Jak dostać się do kodu UF? Prawy klik myszką 6.4 – Jak uruchomić makro w UF? Podwójne kliknięcie na przycisk 6.5 – Jak uruchomić UF w makrze? VBA – praca z makrami w Excelu: piszemy kod! 1. 2. 3. 4. 5. 6. 7. Jak definiować zmienne? Jak użyć gotowej funkcji Excela/VBA? Skąd wiedzieć jakie funkcje mam do wyboru? Piszę kod – jak go uruchomić? Piszę kod – jak sprawdzić wartości zmiennych lub wykonać fragment? UserForm Ulepszamy program VBA – praca z makrami w Excelu: piszemy kod! Ulepszamy program! Ale to już następne zajęcia!