Title: Podstawy programowania w VBA
1Podstawy programowania w VBA
- Microsoft Office Excel 2003
2Edytor VBA
2/20
3Opcje edytora VBA
3/20
4Najwazniejsze opcje edytora VBA
4/20
?
! Zaznaczenie opcji dziala od nowo otwartego
modulu
5Okienko Immediate
5/20
Sub procSub(arg) a arg arg Debug.Print
a End Sub Function procFunc(arg) procFunc
arg arg End Function
6Hierarchia obiektów
6/20
Komórki A1, A2, , IV65536 Komórki A1, A2, ,
IV65536
Excel
Zeszyt1.xls Zeszyt2.xls
Arkusz1 Arkusz2 Arkusz1 Arkusz2
WorkSheet
Workbook
Range
Application
WorkSheet
Range
WorkSheets
Workbook
WorkSheets
Workbooks
Application.Workbooks(Zeszyt1.xls).WorkSheets(A
rkusz1).Range(A1)
7Objekty aktywne
7/20
- Wartosc Application.Workbooks(Zeszyt.xls). _
- Worksheets(Arkusz1).Range(A1).Value
- Jezeli Zeszyt.xls jest aktualnie otwartym
dokumentem - Wartosc Worksheets(Arkusz1).Range(A1).Value
- Wartosc ActiveWorkbook. _
- Worksheets(Arkusz1).Range(A1).Value
- oraz Arkusz1 jest aktualnie otwartym arkuszem
- Wartosc Range(A1).Value
- Wartosc ActiveSheet.Range(A1).Value
Workbook
Worksheet
8Okreslenie argumentów dla metod i wlasciwosci
8/20
Object.Protect(Password,Structure,Windows)
ActiveWorkbook.Protect abc, True,
False ActiveWorkbook.Protect , True,
False ActiveWorkbook.Protect StructureTrue
- Gdy metody i wlasciwosci zwracaja wartosc
- adres ActiveCell.Adress(False, True)
- adres ActiveCell.Adress(ColumnAbsoluteTrue)
Object.Adress(RowAbsolute,ColumnAbsolute) As
String
9Obiekt Range
9/20
- Istnieja 3 mozliwosci uzyskania objectu Range.
- Wlasciwosc Range obiektu Worksheet lub obiektu
klasy Range - Wlasciwosc Cells obiektu Worksheet lub obiektu
klasy Range - Wlasciwosc Offset obiektu Range
- Odwolanie do komórki moze byc
- bezwzgledne
- wzgledne
10Obiekt Range I. Wlasciwosc Range
10/20
- Wlasciwosc Range zwraca obiekt Range
- obiekt.Range(komórka1)
- objekt.Range(komórka1,komórka2)
- Wlasciwosc Range obiektu Worksheet (przyklady)
- ActiveSheet.Range(A1).Value1
- ActiveSheet.Range(A3B5).Value2
- ActiveSheet.Range(A3,B5).Value3
- ActiveSheet.Range(C1,E3,F2).Value4
- Wlasciwosc Range obiektu Range (przyklad)
ActiveCell.Range(B2) 5 odwolanie wzgledne
11Obiekt Range II. Wlasciwosc Cells
11/20
- Wlasciwosc Cells zwraca obiekt Range
- obiekt.Cells(idRow,idColumn)
- obiekt.Cells(idRow)
- obiekt.Cells
- Wlasciwosc Cells obiektu Worksheet (przyklady)
- ActiveSheet.Cells(1,1).Value1
- ActiveSheet.Cells(520).Value2
- ActiveSheet.Cells.ClearContents
- Wlasciwosc Cells obiektu Range (przyklady)
- ActiveCell.Cells(3,2).Value3 odwolanie
wzgledne - Range(B1C10).Cells(5).Value4 odwolanie
wzgledne
12Obiekt Range III. Wlasciwosc Offset
12/20
- Wlasciwosc Offset zwraca objekt Range
- obiekt.Offset(idRow, idColumn)
- Wlasciwosc Offset obiektu Range
- ActiveCell.Offset(0,0).Value3 odwolanie
wzgledne - ActiveCell.Offset(-1,2).Value3 odwolanie
wzgledne
13Obiekt Range Odwolanie wzgledne i bezwzgledne
13/20
ActiveSheet.Range(A7).Value
abc WorkSheets(Ark1).Cells(1,1).Value 123
ActiveCell.Range(A3).Value range Range(D6)
.Cells(1,1).Value cells ActiveCell.Offset(0,0
).Value offset
odwolanie bezwzgledne
WorkSheet
odwolanie wzgledne
Range
A
B
C
123
1 2 3
offset
Odwolanie wzgledem aktywnej komórki
range
cells
Odwolanie wzgledem komórki D6
abc
14Procedury Sub i Function
14/20
Function procFunc(arg) procFunc arg2 End
Function zm5 zm procFunc(zm) MsgBox zm
Sub procSub(arg) arg arg2 End Sub zm5 Call
procSub(zm) MsgBox zm
- zwraca wartosc (wartosc zwracana nazywa sie tak
samo jak funkcja) - argumenty przekazywane sa przez wartosc
- dodaje sie do funkcji uzytkownika (dostepne z
poziomu formuly)
- nie zwraca wartosci
- wymaga slowa kluczowego call do wywolania
procedury - Argumenty przekazywane sa przez referencje
15Procedury Sub
15/20
Sub procSub(arg) arg arg2 End Sub Sub
procSubMain() zm 5 MsgBox zm Call
procSub(zm) MsgBox zm End Sub
Sub procSub(byVal arg) arg arg2 End Sub Sub
procSubMain() zm 5 MsgBox zm Call
procSub(zm) MsgBox zm End Sub
16Definiowanie typów danych
16/20
Dim zm1 As Intiger Dim zm2 As Double Dim zm3 As
String4 Dim zm4 As String zm1 10 zm2
10,67 zm3 abcd zm4 abcd zm5 10 zm6
10,67 zm7 abcd
liczba calkowita liczba rzeczywista lancuch
znaków (stala dlugosc) lancuch znaków (zmienna
dlugosc) typ Intiger 2 bajty typ Double 8
bajtów typ String 4 bajty typ String 14
bajtów typ Variant 16 bajtów typ Variant 16
bajtów typ Variant 26 bajtów
17Instrukcje warunkowe i petle
17/20
IF warunek Then Else If Else End IF
For Each i in tab Next i
For i1 To 5 Next i
Select Case opcja Case 1 Case 2 Case
Else End Select
Do While warunek Loop
Do Loop While warunek
18Tablice
18/20
- Deklarowanie tablicy o 5 elementach typu
calkowitego - Dim tablicaInt(5) As Integer
-
- Deklarowanie tablicy dynamicznej typu tekstowego
- Dim tablicaStr() As String
- Nadanie rozmiaru tablicy
- n5
- ReDim tablicaStr(1 To n)
- Przypisanie wartosci pierwszemu elementowi
tablicy - tablicaStr(1) abcdef
- Wykorzystanie petli for do wypelnienia tablicy
- For i1 To n
- tablicaStr(i) abcdef
- Next i
19Wlasciwosc Selection objektu Application
19/20
Areas(1)
Selection
Areas(2)
obiekt Range
Areas(3)
Areas(4)
Areas(5)
Lob Selection.Areas.Count Lob5 Lkom
Selection.Areas(1).Count Lkom4 w
Selection.Areas(1).Row w1 k
Selection.Areas(1).Column k1 Lw
Selection.Areas(1).Rows.Count Lw2 Lk
Selection.Areas(1).Columns.Count Lk 2
20Wypelnianie tablicy wartosciami z zaznaczonych
komórek arkusza
20/20
Sub Wypelnij() Dim TabStr() As String If
TypeName(Selection) "Range" Then k 1
For Each obszar In Selection.Areas PwOb
obszar.Row PkOb obszar.Column iW
obszar.Rows.Count iK obszar.Columns.Count rozm
iar k - 1 iW iK ReDim Preserve
TabStr(rozmiar) For i PwOb To PwOb iW - 1
For j PkOb To PkOb iK - 1
TabStr(k) Cells(i, j).Value k
k 1 Next j Next i
Next obszar End If End Sub
obszar PwOb PkOb iW iK rozm i iltiW j JltiK k TabStr