1 Visual Basic for Applications Poziom podstawowy Zajęcia 2SGH IT 2014
2 Plan zajęć Zmienne Sposoby na odwołanie do komórek FunkcjeInstrukcje warunkowe MsgBox Dużo przykładów SGH IT 2014
3 Definiowanie zmiennychPisząc funkcję lub procedurę w języku VBA należy pamiętać o zdefiniowaniu typów zmiennych SGH IT 2014
4 Podstawowe typy zmiennychBoolean – zmienna logiczna (prawda/fałsz) Integer – wartości całkowite od do Double – wartości rzeczywiste od -1,79*10^308 do 1,79*10^308 Currency – kwoty pieniężne String – zmienna tekstowa Date – analogicznie jak w Excelu SGH IT 2014
5 Nazwy zmiennych Zasady nazywania zmiennych:Pierwszy znak musi być literą Nazwy nie mogą zawierać spacji i kropek Mogą zawierać znak podkreślenia (interest_fate) Litery mogą być różnej wielkości (InterestRate) Nie mogą zawierać znaków specjalnych (#,$,%,!) Maksymalna długość –254 znaki SGH IT 2014
6 Zmienne tablicowe Służą do przechowywania dużych ilości podobnychdo siebie danych (tego samego typu) i automatyzacji ich przetwarzania. Deklarowanie zmiennych tablicowych: Dim nazwa (
7 Sposoby odwoływania do komórekRange(”A1”) Range("A:A"), Range("1:1") Cells(1,1) Range(Cells(1, 1), Cells(2, 3)) [A1] Activecell Range(”total”) SGH IT 2014
8 Przykład Kopiowanie zawartości aktywnej komórki do komórki A1Sub Makro1() ActiveCell.Copy Range("A1").Select ActiveSheet.Paste End Sub Zadanie 1(Excel): Wyciąć zawartość komórek A1:C2 i wkleić w E2:G4 SGH IT 2014
9 Rozwiązanie 1 Sub Wycinanka() Range("A1", "C2").Cut Range("E2", "G4").Select ActiveSheet.Paste End Sub SGH IT 2014
10 Funkcje Function (funkcje) Przykład:zwracają wartość są uruchamiane identycznie jak formuły wbudowane w Excela Przykład: Zadanie 2: Napisać funkcję liczącą objętość (tzn. mnożącą trzy wymiary) ze zmiennymi w formacie Integer i wynikiem funkcji w formacie Single SGH IT 2014
11 Rozwiązanie 2 Function Objetosc (X As Integer, Y As Integer, Z As Integer) As Single Objetosc = X * Y * Z End Function SGH IT 2014
12 Instrukcje warunkowe Pozwalają na wykonywanie czynności w zależności od określonej sytuacji (położenia kursora, wartości zmiennej itp.) Najczęściej używane If … Then … If … Then … Else Select case SGH IT 2014
13 Instrukcje warunkowe - przykładySGH IT 2014
14 Zadanie 3 Procedura (Sub) sprawdzająca czy liczba w zaznaczonej komórce jest równa 0 Jeśli tak to w komórce A1 pojawia się napis „wartość wynosi zero” Jeśli nie to w A2 pojawia się „wartość jest różna od zera” Przydatne wyrażenia: Activecell.Value Range(„XX").Value If … Then… Else SGH IT 2014
15 Rozwiązanie 3 Sub Makro1() If ActiveCell.Value = 0 Then Range("A1").Value = "wartość wynosi zero" Else Range("A2").Value = "wartość jest różna od zera" End If End Sub SGH IT 2014
16 Message Box Służy do komunikowania użytkownikowi wybranych informacjiPrzykład: Zadanie 4: zmienić poprzedni kod tak, aby wiadomość pojawiała się w Message Box, a nie w komórkach A1 i A2 SGH IT 2014
17 Rozwiązanie 4 Sub Makro1() If ActiveCell.Value = 0 Then MsgBox ("Liczba równa 0") Else MsgBox ("Liczba różna od 0") End If End Sub SGH IT 2014
18 Zadanie Napisz funkcje „prowizja”, która będzie obliczała wartość prowizji jaką otrzyma handlowiec biorąc pod uwagę jego staż oraz jego wynik sprzedażowy Staż 0 : premia 0% Sprzedaż 0- 10k premia 2% Staż 1 : premia 1% Sprzedaż 10k- 20k premia 4% Staż 2 : premia 3% Sprzedaż 20k- 35k premia 5% Staż 3 : premia 4% Staż 4 i więcej : premia 5% Sprzedaż 35k- premia 8%
19 Function prowizja(sprzedaz As Double, staz As Double) As Double Rozwiązanie, przekopiuj do edytora vba premia = premia Function prowizja(sprzedaz As Double, staz As Double) As Double Case Else Else premia = premia premia = premia End Select End If prowizja = sprzedaz * premia Dim premia As Double Select Case prowizja premia = 0 Case 0 To 10000 End Function If staz < 1 Then premia = premia premia = premia + 0 ElseIf staz < 2 Then Case To 20000 premia = premia ElseIf staz < 3 Then premia = premia Case To 35000 ElseIf staz < 4 Then