pętla while… wend
DESCRIPTION
Pętla While… Wend. While warunek blok instrukcji Wend instrukcje. While… Wend. pętla ta wymaga zastosowania wyrażenia porównania, - PowerPoint PPT PresentationTRANSCRIPT
Elementy programowania 1
Pętla While… Wend
While warunek
blok instrukcji
Wend
instrukcje
Elementy programowania 2
While… Wend pętla ta wymaga zastosowania wyrażenia porównania, w pętli może znajdować się jedna instrukcja lub cały blok
instrukcji VB. Blok ten jest wykonywany tak długo jak długo podany warunek jest prawdziwy. Ważne jest więc, aby w ciele pętli umieścić instrukcje, które doprowadzą do tego, że podany warunek kiedyś stanie się fałszywy. W przeciwnym razie pętla się nie zakończy,
jeżeli warunek jest fałszywy już na samym początku przed wykonaniem pętli, to blok instrukcji w ciele pętli nie zostanie wykonany ani razu,
Pętle z warunkiemDo While… Loop sprawdza warunek
na początkuwykonuje pętlę jeżeli warunek jest prawdziwy (powtarzanie dopóki prawda)
Do Until… Loop sprawdza warunek na początku
wykonuje pętlę jeżeli warunek jest nieprawdziwy (powtarzanie dopóki fałsz)
Do… Loop While sprawdza warunek na końcu
wykonuje pętlę jeżeli warunek jest prawdziwy (powtarzanie dopóki prawda)
Do… Loop Until sprawdza warunek na końcu
wykonuje pętlę jeżeli warunek jest nieprawdziwy (powtarzanie dopóki fałsz)
While… Wend sprawdza warunek na początku
wykonuje pętlę jeżeli warunek jest prawdziwy
Elementy programowania 4
Procedury i funkcjeProcedura to wydzielony fragment programu, który zostaje wykonany po wywołaniu nazwy procedury.Dzielenie programu na procedury ułatwia nawigację po programie i kontrolę błędów. Głównym zadaniem procedur jest jednak umożliwienie wielokrotnego wykonywania tego samego fragmentu kodu w różnych częściach programu. Zamiast w każdym z tych miejsc wpisywać ten sam fragment kodu, można umieścić go w procedurze i wywoływać procedurę w żądanych miejscach. Skraca to zapis programu i w przypadku błędu pozwala na dokonanie zmian tylko w jednym miejscu.
Elementy programowania 5
Procedury i funkcje procedury zdarzeniowe - są uruchamiane, kiedy pojawi się
określone zdarzenie (np. wciśnięcie klawisza lub przesunięcie myszki),
procedury ogólne - są uruchamiane, kiedy zostaną wywołane przez inne procedury,
procedury Sub - wykonują określone zadania, ale nie zwracają wartości, kod takiej procedury może rezydować w module formularza, ogólnym lub klasy,
procedury funkcyjne (funkcje) - podobnie jak w procedurze typu Sub, kod procedury funkcyjnej może rezydować w formularzu standardowym lub module klasy, w przeciwieństwie do procedur Sub, zwracają wartość do procedury, która ją wywołała,
6
Tworzenie funkcji
Function nazwa_funkcji ([lista_parametrów])
instrukcje
nazwa_funkcji = wartość
End Function
lista parametrów – opcjonalna; lista zmiennych reprezentujących argumenty, które są przekazywane do funkcji podczas wywołania; nazwy zmiennych powinny być oddzielone przecinkami;
nazwa_funkcji = wartość – wartość zwracana przez funkcję
Elementy programowania 7
Funkcje są dostępne dla wszystkich procedur modułu, mogą być rekurencyjne (mogą wywoływać siebie, jednak
rekurencja może powodować błędy (stack overflow)), cały wykonywalny kod musi być umieszczony wewnątrz procedur
(nie można stworzyć funkcji wewnątrz innej funkcji), funkcję wywołuje się przez podanie jej nazwy z listą argumentów
do przekazania (można wywoływać również przez użycie rozkazu Call),
aby zwrócić wartość z funkcji, należy podstawić tę wartość pod nazwę funkcji, dowolna liczba takich podstawień może się znajdować w dowolnych miejscach funkcji; jeżeli żadna wartość nie zostanie podstawiona pod nazwa_funkcji, funkcja zwróci wartość domyślną: funkcje numeryczne zwracają 0, funkcje łańcuchowe zwracają łańcuch zerowej długości ("") funkcje Variant zwracają Empty,
Elementy programowania 8
Przykład funkcjifunkcja dodająca dwie liczby:
Function sumaliczb(n,m)
sumaliczb = n + m
End Function
9
Odtwarzanie funkcji funkcji napisanej w VBA nie można odtworzyć z okna
makr i edytora VBA, funkcję można umieścić w dowolnej formule w arkuszu:
lub wykorzystać w innej procedurze VBA:Sub Uzycie_funkcji () a = 23 b = 14 MsgBox ("Suma liczb wynosi: " & sumaliczb(a, b))End Sub
Elementy programowania 10
Odtwarzanie funkcji z arkuszafunkcja utworzona w VBA zachowuje się jak funkcja wbudowana Excela stąd odtwarzamy ją następująco:
wywołujemy polecenie Funkcja… z menu Wstaw, szukamy naszej funkcji, i… używamy
Elementy programowania 11
Dostęp do utworzonych funkcji funkcja dostępna jest tylko dopóki otwarty
jest skoroszyt, w którym jest ona przechowywana,
aby dostępna była zawsze można: zachować funkcję w skoroszycie makr
osobistych, zachować skoroszyt zawierający funkcję w
folderze XLStart,
Elementy programowania 12
Przekazywanie argumentów przez zmienne argumentami nazywamy jedną lub więcej
wartości koniecznych do zadziałania funkcji, rezultat funkcji zależy od argumentów, poniższy przykład pokaże jak można
przekazać funkcji sumaliczb pewne wartości z innej procedury (zadanie: oblicz ilość liter w imieniu i nazwisku dowolnej osoby):
Elementy programowania 13
Przykład 1Sub liczbaliter() Dim i As Integer, n As Integer i = Len(InputBox("Podaj imię")) n = Len(InputBox("Podaj nazwisko")) MsgBox ("Imię i nazwisko mają liter: " & sumaliczb(i, n))End Sub
Uwaga! procedurę liczbaliter umieszczamy w tym samym module co funkcję sumaliczb
Elementy programowania 14
Przykład 2Function lacz_tekst(k, o) lacz_tekst = k + " " + oEnd Function
Sub podaj_tekst() Dim i As String, n As String, r As String i = InputBox("Podaj imię:") n = InputBox("Podaj nazwisko:") r = lacz_tekst(i, n) MsgBox rEnd Sub
Elementy programowania 15
Czego funkcje nie potrafią? nie mogą wykonywać poleceń menu, np.:
zawierać instrukcji formatowania danych, wymazywać, wstawiać danych, zawierać instrukcji otwierania pliku, zmieniać wyglądu ekranu itp.
Elementy programowania 16
Typy argumentów funkcje wykonują obliczenia i operacje w oparciu o dane
otrzymane w postaci argumentów, nazwy argumentów podawanych w nawiasach pełnią rolę
podobną do zmiennych, podobnie jak zmienne funkcje mogą być różnego typu (np.
rezultatem funkcji może być ciąg znaków):
Function nazwa_funkcji (argumenty) As typ_funkcji
(jeśli nie podamy typu danych VBA przypisze typ Variant)
Elementy programowania 17
PrzykładFunction iloczyn1(licz1, licz2) As Integer iloczyn1 = licz1 * licz2End Function
Sub mnozenie() Dim licz1 As Single Dim licz2 As Single Dim wynik As Single licz1 = 45.33 licz2 = 19.24 wynik = iloczyn1(licz1, licz2) MsgBox wynikEnd Sub
Ponieważ funkcja iloczyn1 ma typ Integer wynik będzie podany jako liczba całkowita
18
Przekazywanie argumentówprzy wywołaniu procedury (lub funkcji) można przekazać do niej
argumenty na dwa sposoby: przez referencję (domyślny) – do procedury przekazana jest sama
zmienna jako argument procedury. Jeżeli wywołana procedura zmienia wartość argumentu, ta zmiana pozostanie, kiedy sterowanie powróci do procedury wywołującej. Aby określić, że argument będzie przekazywany przez referencję w nagłówku Sub wywoływanej procedury należy zadeklarować zmienną ze słowem ByRef. Ponieważ jest to domyślny sposób przekazywania parametrów, można słowo ByRef pominąć.
przez wartość - przekazana zostaje „kopia” zmiennej jako argument procedury. Jeżeli wywołana procedura zmienia argument, ta zmiana nie pozostanie, kiedy sterowanie powróci do procedury wywołującej. Aby określić, że argument ma być przekazany przez wartość w nagłówku Sub wywoływanej procedury należy użyć słowa kluczowego ByVal, aby zadeklarować zmienną.
Elementy programowania 19
Przykład przekazania argumentu przez wartośćFunction srednia1(ByVal licz1, ByVal licz2, ByVal licz3) licz1 = licz1 + 1 srednia1 = (licz1 + licz2 + licz3) / 3End Function
Sub trzyliczby1() Dim licz1 As Integer, licz2 As Integer, licz3 As Integer licz1 = 10 licz2 = 20 licz3 = 30 MsgBox srednia1(licz1, licz2, licz3) MsgBox licz1 MsgBox licz2 MsgBox licz3End Sub
Elementy programowania 20
Argumenty opcjonalne umieszcza się je na końcu listy argumentów,
które są obowiązkowe, poprzedza słowem kluczowym Optional, można tych argumentów nie użyć w
procedurze, nie można określić typu danych za pomocą
słowa kluczowego As w sposób jawny (w VBA mają domyślny typ Variant),
21
PrzykładFunction srednia3(licz1, licz2, Optional licz3) Dim ileliczb As Integer ileliczb = 3 If IsMissing(licz3) Then licz3 = 0 ileliczb = ileliczb - 1 End If srednia3 = (licz1 + licz2 + licz3) / ileliczbEnd Function
Sub argumentopcjonalny() licz1 = CSng(InputBox("Podaj pierwszą liczbę")) licz2 = CSng(InputBox("Podaj drugą liczbę")) licz3 = CSng(InputBox("Podaj trzecią liczbę")) MsgBox ("Średnia z dwóch pierwszych liczb: " & srednia3(licz1, licz2)) MsgBox ("Średnia z trzech liczb: " & srednia3(licz1, licz2, licz3))End Sub
IsMissing – funkcja sprawdzająca czy przekazano opcjonalny argument procedury;CSng – konwersja wartości na Single
Elementy programowania 22
Funkcje wbudowanelistę funkcji VBA można obejrzeć w Pomocy lub przeglądarce obiektów VBA:
Elementy programowania 23
Funkcje matematyczneAbs (X) wartość bezwzględna
Sgn (X) znak liczby
Int (X) część całkowita
Sqr (X) pierwiastek kwadratowy
Log (X) logarytm naturalny
LogN(X) = Log(X) / Log (N) logarytm o podstawie N
Elementy programowania 24
Funkcje daty i czasuDate zwraca aktualną datę
DateDiff liczy czas między dwoma datami
DateValue zwraca datę z wyrażenia
Day zwraca dzień z daty
Hour zwraca godzinę z czasu
Now zwraca bieżąca data i czas
Time zwraca bieżący czas
Weekday zwraca dzień tygodnia z daty
25
Funkcje tekstoweChr(kodznaku) kod ASCII na znak
np. Chr(10) - zwróci znak przejścia do nowej linii
Val(łańcuch) zwraca wartość zawartą w łańcuchu String jako wartość numeryczną
np. Val(„1615 198numer”) zwróci wartość 1615198
Str(wartość) zwraca wartość typu String reprezentującą wartość numeryczną
np. Str(459) zwróci wartość tekstową „459”
LCase(łańcuch) konwertuje łańcuch (tekst) na małe litery
np. LCase(„Jasio IDZIE do kina na 18”) – zwróci tekst „jasio idzie do kina na 18”
Elementy programowania 26
Funkcje tekstowe cd.UCase(łańcuch) konwertuje łańcuch (tekst) na duże litery
Len(łańcuch) zwraca długość łańcucha
LTrim(łańcuch) usuwa początkowe spacje
RTrim(łańcuch) usuwa końcowe spacje
Trim(łańcuch) usuwa początkowe i końcowe spacje
np. RTrim(" - tekst - ") zwróci wartość " - tekst -"
Elementy programowania 27
Funkcje wejścia-wyjściaMsgBox wyświetla okno komunikatu
InputBox wyświetla okno wprowadzania danych
Dir[(ŚcieżkaDostępu [, Atrybuty])]
zwraca nazwę szukanego pliku lub folderu
FileLen(ŚcieżkaDoPliku)
zwraca rozmiar pliku
28
Funkcje konwersji danychCBool(wyrażenie) konwertuje wyrażenie do typu Boolean
CByte(wyrażenie) konwertuje wyrażenie do typu Byte
CCur(wyrażenie) konwertuje wyrażenie do typu Currency
CInt(wyrażenie) konwertuje wyrażenie do typu Integer
CLng(wyrażenie) konwertuje wyrażenie do typu Long
CSng(wyrażenie) konwertuje wyrażenie do typu Single
CStr(wyrażenie) konwertuje wyrażenie do typu String
Funkcje testujące daneIIf(wyrażenie, GdyTrue, GdyFalse) zwraca jedną z dwóch wartości w
zależności od wartości podanego wyrażenia
IsDate(wyrażenie) zwraca wartość typu Boolean, określającą czy badane wyrażenie może być konwertowane do typu Data
IsNumeric(wyrażenie) zwraca wartość typu Boolean, określającą czy badane wyrażenie może być konwertowane na liczbę
IsEmpty(wyrażenie) zwraca wartość typu Boolean, określającą czy badana zmienna została zainicjowana
Elementy programowania 30
Funkcje testujące daneIsNull(wyrażenie) zwraca wartość typu Boolean, określającą
czy wyrażenie zawiera poprawne dane czy wartość Null
IsMissing(NazwaArgumentu) zwraca wartość typu Boolean, określającą czy opcjonalny argument typu Variant został przekazany do procedury
VarType(NazwaZmiennej) zwraca wartość typu Integer określającą typ zmiennej (dla zmiennej Integer liczbę 2, dla Single 4 itd.)
TypeName(NazwaZmiennej) zwraca wartość typu String zawierającą informacje na temat zmiennej o podanej nazwie
Funkcja MsgBoxMsgBox(Komunikat [, Przyciski] [, Tytuł]
[, PlikHelp, HelpContext])Argument Opis
Komunikat (Wymagany) Wyrażenie łańcuchowe wyświetlane jako wiadomość w oknie dialogowym. Maksymalna długość łańcucha może wynosić 1024 znaki, w zależności od szerokości używanych znaków. Jeżeli łańcuch ten zawiera więcej niż jedną linię, można oddzielać je używając znaków powrotu karetki (Chr(13)) i podziału linii (Chr(10)), lub połączenia (Chr(10) & Chr(13)), pomiędzy poszczególnymi liniami.
Przyciski (Opcjonalny) Wyrażenie numeryczne , które jest sumą wartości (lub stałych VB) określających numer i typ przycisków, które mają być wyświetlane, styl wyświetlanej ikony i modalność okna wiadomości. Jeżeli zostanie ominięty przyjmowana jest domyślna wartość 0.
Elementy programowania 32
Funkcja MsgBoxArgument Opis
Tytuł (Opcjonalny) Wyrażenie łańcuchowe wyświetlane na pasku tytułowym okna dialogowego. Jeżeli zostanie pominięty, na pasku tytułowym zostanie wyświetlona nazwa aplikacji.
PlikHelp (Opcjonalny) Wyrażenie łańcuchowe określające plik pomocy (Help), który ma być użyty do przeszukiwania pomocy kontekstowej dla okna dialogowego. Jeżeli zostanie wprowadzona nazwa pliku pomocy, musi zostać wprowadzony argument HelpContext.
HelpContext (Opcjonalny). Wyrażenie numeryczne określające numer kontekstowy skojarzony z tematem pomocy przez autora pomocy. Jeżeli argument ten zostanie określony, musi zostać określony argument PlikPomocy.
Argument Przyciski funkcji MsgBoxPrzyciski
Stała Wartość Opis
vbOKOnly 0 Wyświetla tylko przycisk OK.
vbOKCancel 1 Wyświetla przyciski OK i Anuluj
vbAbortRetryIgnore 2 Wyświetla przyciski Przerwij, Ponów próbę i Zignoruj
vbYesNoCancel 3 Wyświetla przyciski Tak, Nie i Anuluj
vbYesNo 4 Wyświetla przyciski Tak i Nie
vbRetryCancel 5 Wyświetla przyciski Ponów próbę i Anuluj
Elementy programowania 34
Stała Wartość Opis ikon
vbCritical 16 Wyświetla ikonę wiadomości krytycznej
vbQuestion 32 Wyświetla ikonę pytania
vbExclamation 48 Wyświetla ikonę wiadomości ostrzegawczej (wykrzyknik)
vbInformation 64 Wyświetla ikonę Komunikat informacyjny
Argument Przyciski funkcji MsgBox
Argument Przyciski funkcji MsgBox
StałaWartoś
ćOpis
vbDefaultButton1 0 Pierwszy przycisk jest domyślny
vbDefaultButton2 256 Drugi przycisk jest domyślny
vbDefaultButton3 512 Trzeci przycisk jest domyślny
vbDefaultButton4 768 Czwarty przycisk jest domyślny
Elementy programowania 36
Argument Przyciski funkcji MsgBoxStała Wartość Opis
vbApplicationModal 0Okno modalne dla aplikacji, użytkownik musi
zareagować na wiadomość
vbSystemModal 4096 Okno modalne dla systemu, wszystkie aplikacje są zawieszone dopóki użytkownik nie zareaguje
na wiadomość
vbMsgBoxHelpButton 16384 Wyświetla przycisk Pomoc
VbMsgBoxSetForeground 65536 Okno wiadomości będzie oknem na wierzchu
vbMsgBoxRight 524288 Tekst jest wyrównany do prawej
Elementy programowania 37
Wartości i stałe zwracane przez funkcję MsgBox
Stała Wartość Opis
vbOK 1 OK
vbCancel 2 Anuluj
vbAbort 3 Przerwij
vbRetry 4 Ponów próbę
vbIgnore 5 Zignoruj
vbYes 6 Tak
vbNo 7 Nie
Elementy programowania 38
Przykład funkcji MsgBoxDim Wcisniety As VariantWcisniety = MsgBox("Czy chcesz kontynuowac?",
vbYesNo+vbCritical+vbDefaultButton2, "Pytanie", "DEMO.HLP", 10)
Funkcja InputBoxInputBox(Pytanie [, Tytuł] [, DomyślnyTekst] [, XPos]
[, YPos] [,PlikPomocy, HelpContext])
Argument Opis
Pytanie (Wymagany) Wyrażenie łańcuchowe wyświetlane jako wiadomość w oknie dialogowym. Maksymalna długość łańcucha może wynosić 1024 znaki, w zależności od szerokości używanych znaków. Jeżeli łańcuch ten zawiera więcej niż jedną linię, można oddzielać je używając znaków powrotu karetki Chr(13) i podziału linii Chr(10)
Tytuł (Opcjonalny) Wyrażenie łańcuchowe wyświetlane na pasku tytułowym okna dialogowego. Jeżeli zostanie pominięty, na pasku tytułowym zostanie wyświetlona nazwa aplikacji
Argumenty funkcji InputBoxArgument Opis
DomyślnyTekst (Opcjonalny) Wyrażenie łańcuchowe wyświetlane w oknie wprowadzania danych jako domyślna odpowiedź, jeżeli nie zostanie wprowadzony inny tekst. Jeżeli zostanie ominięty, okno wprowadzania danych zostanie wyświetlone puste.
XPos (Opcjonalny) Wyrażenie numeryczne określające, w jednostach zwanych „twips”, poziomą odległość między lewym brzegiem okna dialogowego, a lewym brzegiem ekranu. Jeżeli zostanie pominięty, okno dialogowe zostaje wycentrowane poziomo.
YPos (Opcjonalny) Wyrażenie numeryczne określające, w jednostkach zwanych „twips”, pionową odległość między górnym brzegiem okna dialogowego, a górą ekranu. Jeżeli zostanie pominięty, okno dialogowe zostaje umieszczone na 1/3 wysokości.
Elementy programowania 41
Argumenty funkcji InputBoxArgument Opis
PlikPomocy (Opcjonalny) Wyrażenie łańcuchowe określające plik pomocy (Help), który ma być użyty do przeszukiwania pomocy kontekstowej dla okna dialogowego. Jeżeli zostanie wprowadzona nazwa pliku pomocy, musi zostać wprowadzony argument HelpContext.
HelpContext (Opcjonalny). Wyrażenie numeryczne określające numer kontekstowy skojarzony z tematem pomocy przez autora pomocy. Jeżeli argument ten zostanie określony, musi zostać określony argument PlikPomocy.
42
Przykład użycia funkcji InputBoxDim Liczba, Tekst As Variant
Liczba = InputBox("Wprowadz liczbe", "Okno wprowadzania", "1")
Tekst = InputBox("Wpisz tekst", , , 100, 100, "DEMO.HLP", 10)
Elementy programowania 43
Listy i tablice w VBA definicja przykłady:
jednowymiarowa: Miasto(3)
Miasto(1) Warszawa
Miasto(2) Poznań
Miasto(3) Kraków
2-wymiarowa: Wymiana(4,3)
Kanada 1CAD 2.5269
Szwajcaria 1CHF 2.4357
USA 1USD 2.9758
W. Brytania 1GBP 5.7363
44
Deklarowanie tablicy
Dim NazwaTablicy (wymiar) As TypDanych
np.
Dim DniTyg(7) As String
Dim Miasto(3) As String
Dim Wymiana(4,3) As Variant
deklaracje tablic jednowymiarowych
deklaracja tablicy dwuwymiarowej
Elementy programowania 45
Tablice - indeksowanieUWAGA! VBA ustawia indeks tablicy od 0, stąd tablica
zadeklarowana: Dim Miasto(3) As String
ma 4 elementy a nie 3!
aby uniknąć indeksowania od 0 można: podać górną i dolną granicę wymiaru:
Dim Miasto(1 To 3) As String Dim Tabela (5 To 15)
w polu deklaracji General (lub w Module) wpisać instrukcję Option Base 1
Elementy programowania 46
TablicePrzykład, jak można odnieść się do elementu tablicy w
kodzie:
Miasto (1) = „Warszawa”‘ Ta instrukcja ustawia 1-szy (lub 2-gi) element tablicy Miasto na wartość Warszawa
Tabela (3) = 28759
‘ Ta instrukcja ustawia 3-ci (lub 4-ty) element tablicy Tabela na wartość 28759
Elementy programowania 47
Tablice statyczne i dynamiczne statyczne – tablice o z góry zadeklarowanym
wymiarze, dynamiczne – wymiar może ulegać
wielokrotnym zmianom w trakcie wykonywania programu (wymiar takiej tablicy nie jest określany),
Elementy programowania 48
Deklaracja tablicy dynamicznejDim NazwaTablicy () As TypDanychpo czym po określeniu, która zmienna przechowuje wymiar,
ponownie w kodzie definiujemy tablicę następująco:
ReDim NazwaTablicy (zmienna) As TypDanych
lub
ReDim NazwaTablicy (Wymiary) [As Typ] [, NazwaTablicy (Wymiary) [As Typ]]...
Elementy programowania 49
Przykłady deklaracji tablic dynamicznych
Dim TablicaDynamiczna () 'deklaracja tablicy dynamicznej
ReDim TablicaDynamiczna (10) 'ustalenie rozmiarów tablicy
...
ReDim TablicaDynamiczna (15) 'zmiana rozmiarów tablicy
Elementy programowania 50
Przykład tablicy dynamicznejSub tablice_dynamiczne() Dim licznik As Integer Dim zbior() As Integer ‘ deklaracja tablicy k = CSng(InputBox("Podaj rozmiar")) ReDim zbior(k) ‘ ustalenie rozmiaru tablicy For licznik = 1 To k zbior(licznik) = licznik + 1 MsgBox (licznik & " element tablicy wynosi: " & zbior(licznik)) Next licznikEnd Sub
procedura wpisuje do tablicy o rozmiarze k elementy o wartości k +1
Elementy programowania 51
Funkcje dla tablictablicami można manipulować za pomocą następujących funkcji:
Array, IsArray, Erase, LBound, UBound.
Elementy programowania 52
Funkcja Array umożliwia utworzenie tablicy w trakcie wykonywania
kodu procedury bez konieczności deklarowania tablicy, funkcja zwraca zawsze tablicę dynamiczną typu
Variant, składnia funkcji:
Array(ListaArgumentów), argument ListaArgumentów jest wymagany, jest to lista
wartości, oddzielonych od siebie przecinkami, które mają wypełnić tablicę; jeżeli nie zostanie podana lista argumentów zostanie stworzona tablica o zerowej długości.
Elementy programowania 53
Przykład użycia funkcji ArraySub tablice_array()
Dim auto As Variant
auto = Array("Ford", "Czarny", "1999")
MsgBox auto(2) & " " & auto(1) & " " & auto(3)
auto(2) = "4-drzwiowy"
MsgBox auto(2) & " " & auto(1) & " " & auto(3)
End Sub
Elementy programowania 54
Funkcja IsArray sprawdza, czy dana zmienna jest tablicą, zwraca wartość logiczną True, jeśli zmienna
jest tablicą (False, gdy nie jest), składania funkcji:
IsArray(NazwaZmiennej)
55
Przykład użycia funkcji IsArraySub tablice_isarray() Dim KolejneLiczby() ‘ deklaracja tablicy dynamicznej Dim IloscLiczb As Integer Dim licznik As Integer
IloscLiczb = InputBox("Podaj ile elementów ma mieć tablica liczb") ReDim KolejneLiczby(1 To IloscLiczb) ‘ ustalenie rozmiaru tablicy
For licznik = 1 To IloscLiczb KolejneLiczby(licznik) = licznik MsgBox ("Element tablicy to: " & KolejneLiczby(licznik)) Next licznik
If IsArray(KolejneLiczby) Then MsgBox "Zmienna KolejneLiczby jest tablicą" MsgBox ("Tablica ma " & IloscLiczb & " elementy(-ów).") End IfEnd Sub
Elementy programowania 56
Funkcja Erase służy do usuwania danych z tablicy, dla tablic dynamicznych po usunięciu danych zwalnia pamięć
przeznaczoną do przechowywania elementów tablicy, dla tablic statycznych:
gdy elementami były wartości liczbowe – ustawia wartość każdego elementu na zero,
gdy elementy były łańcuchowe - ustawia każdy element na łańcuch o zerowej długości (""),
gdy elementy były łańcuchowe ale o stałej długości – ustawia każdy element na zero,
składania funkcji:Erase (ListaTablic)
57
Przykład użycia funkcji EraseSub funkcja_erase() Dim TablicaLiczb(10) As Integer Dim TablicaLancuchow(10) As String Dim TablicaLancuchow10Znakowych(10) As String * 10 Dim TablicaDynamiczna() As Integer
ReDim TablicaDynamiczna(10) 'ustalenie rozmiaru tablicy dynamicznej
Erase TablicaLiczb 'Każdy element ustawia na 0 Erase TablicaLancuchow 'Każdy element ustawia na 'zerowej długości łańcuch ("") Erase TablicaLancuchow10Znakowych 'Każdy element ustawia na 0 Erase TablicaDynamiczna 'zwalnia pamięć używaną przez tablicęEnd Sub
58
Funkcje LBound i Ubound funkcje zwracają liczby całkowite typu Long
odpowiadające dolnemu i górnemu zakresowi wymiaru tablicy,
składnie funkcji:LBound(NazwaTablicy [,NumerWymiaru]) UBound(NazwaTablicy [,NumerWymiaru])
argument NumerWymiaru jest opcjonalną wartością typu Long, wartość ta określa numer wymiaru tablicy, którego górny zakres ma być zwrócony; wymiary numerowane są od 1; jeżeli argument ten nie wystąpi w wywołaniu funkcji zostanie przyjęta domyślna wartość 1,
59
Przykład funkcji LBound i UBoundSub funkcje_tabl() Dim TablicaTo(1 To 10, -3 To 8, 30 To 105) As Variant Dim Tablica(20) As Variant Dim DolnyZakres As Variant Dim GornyZakres As Variant DolnyZakres = LBound(TablicaTo, 1) 'DolnyZakres=1 DolnyZakres = LBound(TablicaTo, 2) 'DolnyZakres=-3 DolnyZakres = LBound(TablicaTo, 3) 'DolnyZakres=30 DolnyZakres = LBound(Tablica) 'DolnyZakres=0 lub 1 w zależności od
'ustawień OptionBase GornyZakres = UBound(TablicaTo, 1) 'GornyZakres=10 GornyZakres = UBound(TablicaTo, 2) 'GornyZakres=8 GornyZakres = UBound(TablicaTo, 3) 'GornyZakres=105 GornyZakres = UBound(Tablica) 'GornyZakres=20End Sub