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. Jak odblokować używanie makr? 2. Jak zarejestrować makro? 3. Jak zapisać makro w pliku? 4. Jak dodać do wstążki zakładkę Deweloper?
Prawy klik myszką gdziebądź
VBA praca z makrami w Excelu 1. Jak odblokować używanie makr? 2. Jak zarejestrować makro? 3. Jak zapisać makro w pliku? 4. Jak dodać do wstążki zakładkę Deweloper? 5. Jak ze wstążki Deweloper dostać się do kodu?
VBA praca z makrami w Excelu 1. Jak odblokować używanie makr? 2. Jak zarejestrować makro? 3. Jak zapisać makro w pliku? 4. Jak dodać do wstążki zakładkę Deweloper? 5. 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 Boolean zależnie od systemu Dwie wartości True lub False Integer 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 Currency 8 bajtów Liczby rzeczywiste o stałej ilości miejsc po przecinku Date 8 bajtów Typ przeznaczony dla dat -922,337,203,685,477.5808 do +922,337,203,685,477.5807 1 styczeń 100 to 31.gru.99 Object 4 bajty Wskaźnik na obiekt wskaźnik na dowolny obiekt String zależnie od zawartości Zestaw znaków o zmiennej długości Zmienny - Do 2 bilionów znaków
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],1)" 'można odwoływać się bezwględnie, adresem: ActiveCell.Formula = "=SEARCH(""-"",G2,1)"
'mozna odwoływać się względnie - jeden w górę i trzy w prawo: ActiveCell.FormulaR1C1 = "=SEARCH(""-"",R[-1]C[3],1)" 'można odwoływać się bezwględnie, adresem: ActiveCell.Formula = "=SEARCH(""-"",G2,1)" 'można wpisać formułę w komórkę tak, żeby była formułą: ActiveCell.FormulaR1C1 = "=SEARCH(""-"",R[-1]C[3],1)" ActiveCell.Formula = "=SEARCH(""-"",G2,1)" 'można wpisać w komórkę bezpośrednio wynik działania funkcji: ActiveCell.Value = WorksheetFunction.Search("-", [G2], 1) '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],1)" 'można odwoływać się bezwględnie, adresem: ActiveCell.Formula = "=SEARCH(""-"",G2,1)" 'można wpisać formułę w komórkę tak, żeby była formułą: ActiveCell.FormulaR1C1 = "=SEARCH(""-"",R[-1]C[3],1)" ActiveCell.Formula = "=SEARCH(""-"",G2,1)" 'można wpisać w komórkę bezpośrednio wynik działania funkcji: ActiveCell.Value = WorksheetFunction.Search("-", [G2], 1) 'przy niektórych funkcjach prościej, bo są wbudowane w VBA: ActiveCell.Value = Left([G3], 5) Uwaga tu trzeba podać adres jako wartość, tzn samo G2 to może być nazwa zmiennej. Trzeba dodać ten nawias, żeby VBA wiedział, że ma to interpretować jako adres
'mozna odwoływać się względnie - jeden w górę i trzy w prawo: ActiveCell.FormulaR1C1 = "=SEARCH(""-"",R[-1]C[3],1)" 'można odwoływać się bezwględnie, adresem: ActiveCell.Formula = "=SEARCH(""-"",G2,1)" 'można wpisać formułę w komórkę tak, żeby była formułą: ActiveCell.FormulaR1C1 = "=SEARCH(""-"",R[-1]C[3],1)" ActiveCell.Formula = "=SEARCH(""-"",G2,1)" 'można wpisać w komórkę bezpośrednio wynik działania funkcji: ActiveCell.Value = WorksheetFunction.Search("-", [G2], 1) '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. Jak definiować zmienne? 2. Jak użyć gotowej funkcji Excela/VBA? 3. Skąd wiedzieć jakie funkcje mam do wyboru? 4. 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. Jak definiować zmienne? 2. Jak użyć gotowej funkcji Excela/VBA? 3. Skąd wiedzieć jakie funkcje mam do wyboru? 4. Piszę kod jak go uruchomić? 5. 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. Jak definiować zmienne? 2. Jak użyć gotowej funkcji Excela/VBA? 3. Skąd wiedzieć jakie funkcje mam do wyboru? 4. Piszę kod jak go uruchomić? 5. Piszę kod jak sprawdzić wartości zmiennych lub wykonać fragment? a) Jest jeszcze inna opcja!
Okno Immediate Ctr+G w edytorze
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? 4. Piszę kod jak go uruchomić? 5. Piszę kod jak sprawdzić wartości zmiennych lub wykonać fragment? 6. 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. Jak definiować zmienne? 2. Jak użyć gotowej funkcji Excela/VBA? 3. Skąd wiedzieć jakie funkcje mam do wyboru? 4. Piszę kod jak go uruchomić? 5. Piszę kod jak sprawdzić wartości zmiennych lub wykonać fragment? 6. UserForm 7. Ulepszamy program
VBA praca z makrami w Excelu: piszemy kod! Ulepszamy program! Ale to już następne zajęcia!