Podstawy programowania w VBA Microsoft Office Excel 2003
Podstawy programowania w VBA Microsoft Office Excel 2003
Edytor VBA l Skrót Alt+F 11 2/20
Opcje edytora VBA 3/20
Najważniejsze opcje edytora VBA ü Auto Syntax Check ü Auto List Members ü Auto Quick Info ! Zaznaczenie opcji działa od nowo otwartego modułu ü Auto Data Tips 4/20
Okienko Immediate l Skrót Ctrl + G Sub proc. Sub(arg) a = arg + arg Debug. Print a End Sub Function proc. Func(arg) proc. Func = arg + arg End Function 5/20
Hierarchia obiektów Excel Application Zeszyt 1. xls Workbook Arkusz 1 Work. Sheet Arkusz 2 Work. Sheet 6/20 Komórki A 1, A 2, …, IV 65536 Range … Work. Sheets Zeszyt 2. xls Workbook … Workbooks Arkusz 1 Arkusz 2 … Work. Sheets Application. Workbooks(„Zeszyt 1. xls”). Work. Sheets(„Arkusz 1”). Range(„A 1”)
Objekty aktywne 7/20 Wartosc = Application. Workbooks(„Zeszyt. xls”). _ Workbook Worksheets(„Arkusz 1”). Range(„A 1”). Value Worksheet Jeżeli Zeszyt. xls jest aktualnie otwartym dokumentem Wartosc = Worksheets(„Arkusz 1”). Range(„A 1”). Value Wartosc = Active. Workbook. _ Worksheets(„Arkusz 1”). Range(„A 1”). Value • oraz Arkusz 1 jest aktualnie otwartym arkuszem Wartosc = Range(„A 1”). Value Wartosc = Active. Sheet. Range(„A 1”). Value •
Określenie argumentów dla metod i właściwości 8/20 Object. Protect([Password], [Structure], [Windows]) Active. Workbook. Protect „abc”, True, False Active. Workbook. Protect Structure: =True • Gdy metody i właściwości zwracają wartość Object. Adress([Row. Absolute], [Column. Absolute]…) As String adres = Active. Cell. Adress(False, True); adres = Active. Cell. Adress(Column. Absolute: =True);
Obiekt Range 9/20 Istnieją 3 możliwości uzyskania objectu Range. • Właściwość Range obiektu Worksheet lub obiektu klasy Range • Właściwość Cells obiektu Worksheet lub obiektu klasy Range • Właściwość Offset obiektu Range Odwołanie do komórki może być • bezwzględne • względne
Obiekt Range I. Właściwość Range 10/20 Właściwość Range zwraca obiekt Range • obiekt. Range(komórka 1) • objekt. Range(komórka 1, komórka 2) Właściwość Range obiektu Worksheet (przykłady) Active. Sheet. Range(”A 1”). Value=1 Active. Sheet. Range(”A 3: B 5”). Value=2 Active. Sheet. Range(”A 3”, ”B 5”). Value=3 Active. Sheet. Range(”C 1, E 3, F 2”). Value=4 Właściwość Range obiektu Range (przykład) Active. Cell. Range(”B 2”) = 5 ‘odwołanie względne
Obiekt Range II. Właściwość Cells 11/20 Właściwość Cells zwraca obiekt Range • obiekt. Cells(id. Row, id. Column) • obiekt. Cells(id. Row) • obiekt. Cells Właściwość Cells obiektu Worksheet (przykłady) Active. Sheet. Cells(1, 1). Value=1 Active. Sheet. Cells(520). Value=2 Active. Sheet. Cells. Clear. Contents Właściwość Cells obiektu Range (przykłady) Active. Cells(3, 2). Value=3 Range(”B 1: C 10”). Cells(5). Value=4 ‘odwołanie względne
Obiekt Range III. Właściwość Offset 12/20 Właściwość Offset zwraca objekt Range • obiekt. Offset(id. Row, id. Column) Właściwość Offset obiektu Range Active. Cell. Offset(0, 0). Value=3 Active. Cell. Offset(-1, 2). Value=3 ‘odwołanie względne
Obiekt Range 13/20 Odwołanie względne i bezwzględne Active. Sheet. Range(”A 7”). Value = ”abc” Work. Sheets(”Ark 1”). Cells(1, 1). Value = 123 Work. Sheet Active. Cell. Range(”A 3”). Value = ”range” Range(”D 6”). Cells(1, 1). Value = ”cells” Active. Cell. Offset(0, 0). Value = ”offset” Range B C A 1 2 3 odwołanie bezwzględne odwołanie względne 123 offset Odwołanie względem aktywnej komórki range abc cells Odwołanie względem komórki D 6
Procedury Sub i Function 14/20 Sub proc. Sub(arg) arg = arg*2 End Sub Function proc. Func(arg) proc. Func = arg*2 End Function zm=5 Call proc. Sub(zm) Msg. Box zm zm=5 nie zwraca wartości l wymaga słowa kluczowego call do wywołania procedury l Argumenty przekazywane są przez referencję l l zm = proc. Func(zm) Msg. Box zm zwraca wartość (wartość zwracana nazywa się tak samo jak funkcja) l argumenty przekazywane są przez wartość l dodaje się do funkcji użytkownika (dostępne z poziomu formuły)
Procedury Sub 15/20 Sub proc. Sub(arg) arg = arg*2 End Sub proc. Sub(by. Val arg) arg = arg*2 End Sub Sub proc. Sub. Main() zm = 5 Msg. Box zm Call proc. Sub(zm) Msg. Box zm End Sub
Definiowanie typów danych Dim Dim zm 1 zm 2 zm 3 zm 4 = = As As Intiger Double String*4 String 10 10, 67 ”abcd” zm 5 = 10 zm 6 = 10, 67 zm 7 = ”abcd” 16/20 ‘liczba całkowita ‘liczba rzeczywista ‘łańcuch znaków (stała długość) ‘łańcuch znaków (zmienna długość) ‘typ Intiger; 2 bajty Double; 8 bajtów String; 4 bajty String; 14 bajtów ‘typ Variant; 16 bajtów ‘typ Variant; 26 bajtów
Instrukcje warunkowe i pętle IF warunek Then … Else If … Else … End IF Select Case opcja Case 1 … Case 2 … Case Else … End Select For Each i in tab … Next i For i=1 To 5 … Next i Do While warunek … Loop Do … Loop While warunek 17/20
Tablice ‘Deklarowanie tablicy o 5 elementach typu całkowitego Dim tablica. Int(5) As Integer ‘Deklarowanie tablicy dynamicznej typu tekstowego Dim tablica. Str() As String ‘Nadanie rozmiaru tablicy n=5 Re. Dim tablica. Str(1 To n) ‘Przypisanie wartości pierwszemu elementowi tablicy tablica. Str(1)= ”abcdef” ‘Wykorzystanie pętli for do wypełnienia tablicy For i=1 To n tablica. Str(i) = ”abcdef” Next i 18/20
Właściwość Selection objektu Application 19/20 Areas(1) Selection Areas(2) obiekt Range Areas(3) Areas(4) Areas(5) Lob = Selection. Areas. Count Lkom = Selection. Areas(1). Count w = Selection. Areas(1). Row k = Selection. Areas(1). Column Lw = Selection. Areas(1). Rows. Count Lk = Selection. Areas(1). Columns. Count ‘ ‘ ‘ Lob=5 Lkom=4 w=1 k=1 Lw=2 Lk = 2
Wypełnianie tablicy wartościami z zaznaczonych komórek arkusza 20/20 Sub Wypelnij() Dim Tab. Str() As String If Type. Name(Selection) = "Range" Then k = 1 For Each obszar In Selection. Areas Pw. Ob = obszar. Row Pk. Ob = obszar. Column i. W = obszar. Rows. Count i. K = obszar. Columns. Count rozmiar = k - 1 + i. W * i. K Re. Dim Preserve Tab. Str(rozmiar) For i = Pw. Ob To Pw. Ob + i. W - 1 For j = Pk. Ob To Pk. Ob + i. K - 1 Tab. Str(k) = Cells(i, j). Value k = k + 1 Next j Next i Next obszar b 1 b 2 a 1 a 2 b 4 End If End Sub c 4 a 6 d 7 d 8 b 7 obszar Pw. Ob Pk. Ob i. W i. K rozm i i<=i. W j J<=i. K d 4 k Tab. Str
- Slides: 20