Funkcje w podstawowym języku wizualnym. Funkcje matematyczne języka Visual Basic

Prawie cały kod programu modułów VBA zawarty jest w procedurach dwóch typów: Sub (podprogramy) i Function (funkcje). Głównym zadaniem procedury Function jest obliczenie pewnej wartości i zwrócenie jej do punktu, w którym wywoływana jest procedura funkcyjna.

Składnia procedury funkcji:

Funkcja Nazwa_funkcji(argumenty As) As

Nazwa_funkcji = Wartość_zwracana

Funkcja końcowa

Procedury funkcyjne można stosować w różnych wyrażeniach.

Przykład 1

Na przykład najprostsza procedura-funkcja Funkcja:

Funkcja F1(x jako waluta) jako waluta

Funkcję F1(x) można wykorzystać w dalszych obliczeniach (kod modułu). Procedurę typu Function można wykonać jedynie poprzez wywołanie jej z innej procedury. Aby to zrobić, procedura wywołująca musi przypisać nazwę tego F1(x) do jakiejś zmiennej.

Przykład 2

Na przykład funkcja F1(x) może zostać użyta w procedurze MySub(), nadając zmiennej nazwę „y” F1(x).

Dim y As Single „Deklaracja zmiennej y

y = F1 (9) „Wyznacz F1 (x) dla wartości x=9

Debug.Print y „Wydrukuj wartości w oknie natychmiastowym

Funkcja F1 (x Jako pojedyncza) Jako pojedyncza

F1 = x^10 „Zwróć wartość x do potęgi 10

Tutaj funkcja F1(x)=$x^(10)$ dla wartości $ x=9$ zwraca wartość $3,486785E+09$ do procedury wywołującej MySub(). Jeśli wartość zwracana przez funkcję lub zmienna używana w procedurze VBA nie ma zadeklarowanego typu danych, domyślnym typem danych będzie Variant.

VBA wykorzystuje zarówno procedury Function, jak i funkcje wbudowane.

Funkcje wbudowane składają się z dwóch części: nazwy (identyfikatora) i argumentów. Funkcje wbudowane to gotowe formuły VBA, które wykonują określone akcje na wyrażeniach i zwracają pewną wartość w momencie ich wywołania.

Funkcje zamiast nazwy zwracają wartość wyniku, która jest wykorzystywana w dalszych obliczeniach. Zazwyczaj funkcje wymagają argumentów zapisanych w nawiasach oddzielonych przecinkami. Ale niektóre funkcje nie wymagają argumentów. Na przykład funkcja Now(), która nie wymaga argumentów, zwraca bieżącą datę i godzinę systemową. Funkcji można używać do tworzenia nowych wyrażeń lub funkcji.

Jak wstawić funkcję do tekstu programu? Aby użyć funkcji w wyrażeniach, należy wprowadzić jej nazwę w instrukcji VBA. Aby wywołać funkcję wbudowaną, która nie wymaga argumentów, wystarczy wpisać jej nazwę (np. Now) w kodzie programu modułu:

Sub-MojaData()

Dim TD „Zadeklaruj zmienną TD

TD = Teraz „Określ aktualną datę i godzinę systemową

Debug.Print TD „Wydrukuj wartości w oknie natychmiastowym

Aby wywołać funkcję wymagającą podania jednego lub większej liczby argumentów, należy po prawej stronie operatora przypisania wpisać jej nazwę z parametrami (wartościami argumentów) ujętymi w nawiasy. Na przykład, aby wywołać wbudowaną funkcję Log (N) z jedną zmienną N w procedurze typu Sub, zmiennej Log_N przypisuje się nazwę funkcji Log (50) z wartością argumentu 50.

Sublogarytm naturalny()

Dim LogN „Zadeklaruj zmienną LogN

Debug.Print LogN „Wydrukuj wartości w oknie natychmiastowym

Notatka 1

Tutaj wbudowana funkcja Log(N) dla argumentu o wartości 50 zwraca wartość 3,91202300542815 w momencie wywołania Log(50) procedury wywołującej „Sub Natural_logarithm()”. Funkcję można wywołać albo za pomocą osobnej instrukcji VBA, albo poprzez umieszczenie jej nazwy z listą wartości argumentów (parametrów) w formule lub wyrażeniu w programie VBA. VBA wykorzystuje zagnieżdżanie funkcji w celu skrócenia notacji, umożliwiając określenie jednego wywołania funkcji jako argumentu innej funkcji. W tym przypadku wartość zwracana przez pierwszą funkcję jest używana jako argument dla następnej funkcji.

VBA posiada duży zestaw wbudowanych funkcji i procedur ułatwiających programowanie, które można podzielić na następujące kategorie:

  • matematyczny;
  • funkcje sprawdzania typu;
  • funkcje przetwarzania ciągów znaków;
  • funkcja formatowania;
  • funkcje konwersji formatu;
  • funkcje daty i godziny.

Funkcje matematyczne

Funkcje matematyczne obejmują:

  • Abs (x) - moduł argumentu $x$;
  • Cos(x) - cosinus argumentu $x$;
  • Exp(x) - podniesienie podstawy logarytmu naturalnego do potęgi $x$;
  • Log(x) - logarytm naturalny argumentu $x$;
  • Rnd - losowa liczba z przedziału;
  • Sin(x) - sinus argumentu $x$;
  • Sqr(x) - pierwiastek kwadratowy z $x$;
  • Atn(x) - arcustangens $x$;
  • Tan(x) – tangens $x$;
  • Sgn(x) – znak $x$.

Obie funkcje Fix(x) i Int(x) odrzucają część ułamkową liczby i zwracają wartość całkowitą. Różnica między tymi funkcjami dotyczy ujemnych wartości argumentów. Int(x) zwraca najbliższą ujemną liczbę całkowitą mniejszą lub równą x, a Fix(x) zwraca najbliższą ujemną liczbę całkowitą większą lub równą x.

Funkcje sprawdzania typu

Oto funkcje określające typ zmiennej:

  • IsArray(x) – funkcja sprawdza, czy zmienna jest tablicą;
  • IsDate(x) określa, czy zmienna jest datą;
  • IsError(x) określa, czy zmienna jest kodem błędu;
  • IsNull(x) określa, czy zmienna jest wartością pustą;
  • IsNumeric(x) określa, czy zmienna jest wartością numeryczną;
  • IsObject(x) określa, czy zmienna jest obiektem.

Funkcja formatowania

Funkcja formatująca zwraca wartość wariantu (string) zawierającą wyrażenie sformatowane zgodnie ze składnią funkcji:

Format(Wyrażenie[,Format [,Pierwszy dzień tygodnia[,Pierwszy tydzień roku]]]), gdzie:

  • Wyrażenie – wymagany argument (dowolne prawidłowe wyrażenie – kombinacja słów kluczowych, operatorów, zmiennych i stałych, której wynikiem jest ciąg znaków, liczba lub obiekt);
  • Format jest parametrem opcjonalnym (dowolnym prawidłowym wyrażeniem formatu nazwanym lub zdefiniowanym przez użytkownika).

Jeżeli do nazwy funkcji zostanie dodany znak $, to funkcja zwróci wartość typu String., następnie funkcja zwróci wartość typu String.

Tworząc własny format liczb, możesz użyć następujących znaków:

  • 0 – rezerwuje cyfrową pozycję bitu. Wyświetla cyfrę lub zero. Jeśli formatowana liczba ma jakąkolwiek cyfrę na tej pozycji, gdzie w ciągu formatującym znajduje się 0, funkcja wyświetla tę cyfrę; jeśli nie, to na tej pozycji wyświetlane jest zero;
  • „#” – działanie tego symbolu jest podobne do działania 0, z tą tylko różnicą, że nieistotne zera nie są wyświetlane;
  • . – rezerwuje pozycję separatora dziesiętnego, określa, ile cyfr ma zostać wyświetlonych po lewej i prawej stronie przecinka dziesiętnego;
  • % - rezerwuje procentowe wyświetlanie liczby;
  • . – oddziela setki od tysięcy.

Funkcje konwersji formatu

Obejmują one:

  • Val(string) – zwraca liczby zawarte w ciągu jako wartość liczbową odpowiedniego typu.
  • Str(liczba) – zwraca wartość typu Variant (String), która jest ciągiem reprezentującym liczbę.

Oprócz funkcji Val i Str istnieje wiele funkcji służących do konwersji typów wyrażeń.

Funkcje przetwarzania ciągów

Wśród wielu funkcji są następujące:

  • Chr(kod) – konwertuje kod ASCII na ciąg znaków. Na przykład Chr(10) wykonuje nową linię, Chr(13) wykonuje powrót karetki;
  • Mid(string, pos[,length]) – zwraca podciąg ciągu zawierającego określoną liczbę znaków, gdzie Łańcuch jest wyrażeniem łańcuchowym, z którego pobierany jest podciąg;
  • Pos – pozycja znaku w ciągu, od którego zaczyna się żądany podciąg;
  • Długość – liczba zwróconych znaków podciągu;
  • Len(string) – zwraca liczbę znaków w ciągu.

Funkcje czasu i daty

Zwróć wartość Variant zawierającą datę systemową, bieżący czas itp. Na przykład funkcja Date zwraca wartość zawierającą datę systemową.

Procedury i funkcje

Wyrażenia i operatory są surowcem do bloków, z których budowane są programy, gdzie procedury i funkcje działają jak bloki.

Procedury i funkcje

W Visual Basicu, podobnie jak w wielu innych językach programowania, większość programów tworzona jest z bloków – procedur i funkcji. Cały kod programu znajduje się wewnątrz tych procedur. Jeśli zachodzi potrzeba rozwiązania dowolnego problemu w dowolnym miejscu programu, wówczas wywoływana jest procedura. W Visual Basic nie można wprowadzać kodu pomiędzy procedurami. Kod powinien zawsze znajdować się wewnątrz procedury.

Rozumiemy pojęcia i określmy, co nazwiemy procedurą, a jaką funkcją.

Procedury:

Procedura to blok kodu, który zostanie wykonany za każdym razem, gdy zostanie wywołana ta procedura. Każda procedura zaczyna się od zarezerwowanego słowa Sub i kończy się End. Oto ogólna składnia procedury:

[Prywatne | Publiczne | Przyjaciel ] Sub name [(arglist)]

    

Napis końcowy

Wszystko ujęte w nawiasy kwadratowe jest opcjonalne. Instrukcja Exit Sub umożliwia wcześniejsze zakończenie procedury. Czasami jest to bardzo wygodne. Słowa Publiczny, Prywatny mają takie samo znaczenie jak przy deklarowaniu zmiennych.

lista arglist wygląda następująco:

[Opcjonalnie ] nazwa_zmiennej[()]
[= wartość domyślna]

Przyjrzyjmy się przykładowej procedurze, która wyświetli na ekranie komunikat „Hello World!”:

Prywatny sub Pokaż wiadomość()
    MsgBox „Witaj, świecie!”
Napis końcowy

Co możesz powiedzieć o tym zabiegu? Procedura jest typu Private, tj. będzie dostępny tylko z kodu dokładnego formularza (modułu), w którym jest zadeklarowany (pamiętaj o typach deklaracji zmiennych). Procedura ta nie zawiera parametrów, jak mówią nam puste nawiasy, a jej celem jest wyświetlenie na ekranie komunikatu Hello World.

MsgBox to wbudowana funkcja języka Visual Basic, która wyświetla okno z komunikatem określonym jako parametr. Pozostałe parametry są opcjonalne (w sumie jest ich 5). Możesz przeczytać więcej o funkcji MsgBox.

Jak wywołać procedurę? Aby to zrobić wystarczy wpisać nazwę procedury:

Pokaż wiadomość

Możesz też to zrobić:

Dzwonić Pokaż wiadomość „bardziej opcja wizualna

Obie te opcje są całkowicie równoważne. Ale aby wywołać procedury, nadal lepiej jest skorzystać z drugiej opcji.

Zmodyfikujmy teraz tę procedurę i dodajmy do niej parametr, którego wartość zostanie wyprowadzona przez funkcję MsgBox (zamiast Hello World):

Prywatny sub ShowMessage(wiadomość jako ciąg znaków)
    Wiadomość MsgBox
Napis końcowy

Teraz, wywołując procedurę, musisz podać parametr:

Dzwonić ShowMessage("Nasza pierwsza procedura")

Efektem wykonania takiej procedury będzie wyświetlenie komunikatu: „Nasza pierwsza procedura”. Nawiasy otaczające parametr są wymagane, jeśli nazwa procedury jest poprzedzona instrukcją Call. Jeśli brakuje Call, nie ma potrzeby wstawiania nawiasów.

Przyjrzyjmy się bliżej temu, co się dzieje, gdy wywołujemy naszą procedurę. Po napotkaniu linii z wywołaniem naszej procedury Visual Basic sprawdza, czy procedura ta wymaga parametrów. Upewniwszy się, że są potrzebne (parametr komunikatu), przekazuje do procedury ciąg „Nasza pierwsza procedura”. Te. w rzeczywistości procedura przypisuje zmiennej komunikatu wartość „Nasza pierwsza procedura”. Cóż, wtedy wywoływana jest funkcja MsgBox i na ekranie pojawia się komunikat. Jeśli liczba parametrów przekazanych podczas wywoływania procedury nie jest zgodna z liczbą parametrów w deklaracji procedury, Visual Basic wygeneruje błąd.

Ustaliliśmy więc procedury. Czas zrozumieć funkcje.

Funkcje:

Funkcja to blok kodu, który zwraca wartość. To i tylko to odróżnia funkcje od procedur. Ogólna składnia funkcji:

[Publiczne | Prywatne | Przyjaciel ] Funkcja nazwa funkcji _
[(arglista)]
    [tutaj jakiś kod]

    
    [tu może też znajdować się jakiś kod]
    [nazwa funkcji = wyrażenie]
Funkcja końcowa

Co oznacza „zwróci wartość”? Rozważmy funkcję z lekcji 8:

Funkcja publiczna MyFunc() Jako bajt
    MojaFunkcja = 234
Funkcja końcowa

c = MojaFunkcja()

Kiedy rozmawialiśmy o wyrażeniach, powiedzieliśmy, że MyFunc jest wyrażeniem o wartości 234. To znaczy. tutaj funkcja MyFunc zwraca wartość 234 (bajty). Aby ustawić tę wartość, należy ustawić nazwę funkcji na wyrażenie. W naszym przypadku liczba 234 jest używana jako wyrażenie.

Spójrzmy na bardziej praktyczny przykład. Napiszmy funkcję obliczającą kwadrat liczby. Funkcja będzie miała 1 parametr typu Integer - liczbę do kwadratu. Funkcja zwróci wartość kwadratu parametru. Typ zwrotu - Długi:

Plac Funkcji Publicznych (liczba Tak długo) Tak długo
    Kwadrat = liczba * liczba
Funkcja końcowa

Funkcję możesz wywołać w ten sposób:

b = Kwadrat (5)

Możesz też to zrobić, korzystając z naszej procedury wyświetlania komunikatu na ekranie:

Pokażkwadrat wiadomości (5)

Możesz też to zrobić:

Kwadrat 5

W tym drugim przypadku wartość zwrócona przez funkcję prowadzi donikąd, ale sama funkcja zostanie wykonana bezpiecznie. Zwróć uwagę na brak nawiasów w ostatnim wywołaniu. Nawiasy są tutaj opcjonalne, w przeciwieństwie do poprzednich dwóch wywołań. Tam nawiasy są wymagane. (no cóż, jest to zrozumiałe, jakby Visual Basic bez nawiasów zgadł, gdzie są parametry dla ShowMessage, a gdzie dla Square).

Na następnej lekcji zapoznamy się ze sterowaniem i napiszemy mały program.

W tej części dowiesz się, jakimi typami danych można manipulować w VBA, w jaki sposób przechowywane są dane tymczasowe w VBA, jak łączyć zmienne i stałe w celu tworzenia nowych wartości oraz dowiesz się, jak uwzględniać funkcje wbudowane w wyrażeniach.

Praca laboratoryjna nr 3. Przegląd typów danych VB. Zmienne i

stałe. Zgodność typów danych. Operator przypisania. Operatory arytmetyczne i logiczne. Wbudowane funkcje

Cel lekcji: Poznaj typy danych. Potrafić tworzyć zmienne. Być w stanie ustawić typy danych na zmienne. Potrafić tworzyć nazwane stałe. Poznaj zakres

zmienne i stałe. Poznaj konwersję typów. Naucz się korzystać z operatora przypisania. Zna działania arytmetyczne i logiczne. Dowiedz się, jak używać łączenia ciągów. Potrafić korzystać z wbudowanych funkcji VBA. Materiały do ​​lekcji: MS Excel 2003.

Przegląd typów danychWizualnyPodstawowy (VB)

Zanim zaczniesz poznawać zmienne, powinieneś zrozumieć, w jaki sposób VBA przechowuje różne typy informacji. VBA, podobnie jak większość innych systemów programowania, dzieli przetwarzane dane na liczby, daty, tekst i inne typy. Typ danych(dane typ) to termin odnoszący się do pewnych typów danych, które VBA przechowuje i którymi może manipulować. W tabeli Rysunek 9 podsumowuje typy danych VBA, pokazuje, ile pamięci zajmuje każdy typ, krótko opisuje typy danych i podaje zakres wartości, jakie dany typ może przechowywać.

Tabela 9– Typy danych VBA

Wpisz imię

Rozmiar wbajty

Dodatnie liczby całkowite od 0 do 255

Liczby całkowite od -32768 do 32767

Długie liczby całkowite od -2147483648 do 2147483647

Liczby rzeczywiste o zwykłej precyzji z

zmiennoprzecinkowy.

Liczby ujemne:

od -3.402823E38 do -1.401298E-45.

Liczby dodatnie:

od 1.401298E-45 do 3.402823E38

Liczby rzeczywiste o podwójnej precyzji z

zmiennoprzecinkowy.

Liczby ujemne:

od -1,79769313486232E308 do

4.94065645841247E-324.

Liczby dodatnie:

od 4.94065645841247E-324 do

1.79769313486232E308

Liczby zawierające do 15 cyfr przed przecinkiem i 4 cyfry po nim (jednostki waluty). Od -922337203685477.5808 do 922337203685477.5807

Do przechowywania wartości logicznych; może zawierać tylko wartości True lub False

Wpisz imię

Rozmiar wbajty

Opis i zakres wartości

Do przechowywania kombinacji informacji o dacie i godzinie. Zakres dat może wynosić od 1 stycznia 100 do 31 grudnia 9999 r. Zakres czasu od 00:00:00 do 23:59:59

Ciąg (ciąg o zmiennej długości)

10 bajtów + Służy do przechowywania tekstu. Długość ciągu może wynosić od 0 znaków do (w przybliżeniu) 2 miliardów znaków

Strunowy

poprawiona długość)

Długość Służy do przechowywania tekstu. Ciągi Can (jeden zawiera od jednego do (w przybliżeniu) 65400 bajtów na znak)

16 bajtów + 1 bajt/znak

Typ wariantu może przechowywać dowolny inny typ danych. Zakres danych wariantu zależy od aktualnie przechowywanych danych. W przypadku tekstu zakres odpowiada typowi string; w przypadku liczb zakres jest taki sam jak w przypadku typu Double

Służy do uzyskiwania dostępu do dowolnego obiektu rozpoznawanego przez VBA. Przechowuje adres obiektu w pamięci

W tabeli 9 natknąłeś się na reprezentację danych o nazwie notacja wykładnicza(naukowy notacja), który służy do wyświetlania bardzo dużych i bardzo małych liczb w kompaktowym formacie na urządzeniach zewnętrznych (monitorze, drukarce itp.). W notacji wykładniczej wartości są zapisywane bez zer początkowych i końcowych i mają tylko jedną cyfrę na lewo od miejsca dziesiętnego. Liczbę mnoży się do pewnego stopnia przez 10, aby pokazać, gdzie faktycznie znajduje się miejsce po przecinku.

VBA ma sześć różnych typów danych liczbowych: Bajt, Liczba całkowita, Długi, Pojedynczy, Podwójnie I Waluta. Numeryczne typy danych służą do przechowywania (i manipulowania) liczbami w różnych formatach, w zależności od konkretnego typu.

Zwykle program VBA (jak każdy inny program) „podejmuje” decyzje, sprawdzając, czy spełnione są różne warunki. Aby ułatwić testowanie warunków i zapewnić przechowywanie wyników takich testów, VBA udostępnia typ danych Boolean. Wartości logiczne PRAWDA I FAŁSZ zwany Wartość logiczna(Wartość logiczna) wartości. Ich nazwa związana jest z nazwiskiem matematyka, który opracował system logiki matematycznej. Typ danych Boolean VBA jest również nazywany Wartość logiczna. Typ boolowski VBA wymaga dwóch bajtów pamięci i może przyjmować jedną z dwóch wartości: PRAWDA Lub FAŁSZ. Jeśli wyświetlisz typ Wartość logiczna na ekranie VBA automatycznie konwertuje go na ciąg zawierający dowolne słowo PRAWDA, Lub FAŁSZ. Wartości logiczne uzyskuje się jako

wynik operacji porównania.

VBA używa typu Data do przechowywania dat i godzin. Nie musisz się martwić o to, jak VBA przechowuje dane o typach Data, – możesz po prostu wyświetlać, zapisywać i manipulować datami; VBA automatycznie obsługuje wszystkie szczegóły konwersji liczby sekwencyjnej na rok, miesiąc, dzień i godzinę. Typ VBA Data jest typem kolejne daty(seryjny Daktyle). Kolejne daty przechowują datę jako liczbę dni od podanej daty początkowej. Data bazowa dla typu VBA Data Jest 30 grudnia 1899. VBA używa liczb ujemnych do reprezentowania dat przed 30.12.1899 i liczb dodatnich do reprezentowania dat po 30.12.1899. Liczba 0 oznacza samą datę, 30.12.1899. Według tego schematu 1 stycznia 1900 r. zapisuje się jako cyfrę 2 (1 stycznia 1990 r. przypada 2 dni po 30 grudnia 1899 r.), natomiast liczba –2 oznacza datę 28 grudnia 1899 r. (dwa dni przed 30 grudnia 1899 r. ). Aby to sprawdzić, napisz prostą procedurę.

Ćwiczenie 1. Napisz procedurę, która wypisuje komunikat z datą.

Dla tego:

Napisz procedurę (Listing 3):

Wymienianie kolejno 3 ProceduraDataTest

1 podrzędny test daty()

2 Wym d Jako data 3

W wyniku tej procedury na ekranie zostanie wyświetlona data bazowa (rys. 15).

Ryż. 15 W wartości daty sekwencyjnej część całkowita (liczby po lewej stronie miejsca dziesiętnego) to całkowita liczba dni od daty bazowej. Data sekwencyjna VBA może zawierać cyfry po prawej stronie miejsca dziesiętnego; liczby te wskazują porę dnia jako część dnia. Jedna godzina to 1/24 dnia (w przybliżeniu 0,0416). Podobnie jedna minuta to 1/1440 dnia, a sekunda to 1/86 400 dnia. Możesz odjąć jedną datę od drugiej, dodać ją do daty lub odejmij liczby, aby zmienić ich wartości. Na przykład, jeśli chcesz określić liczbę dni między dwiema datami, po prostu odejmij wcześniejszą datę od późniejszej. Ponieważ są to wartości takie jak Data, VBA „wie”, że celem obliczeń jest uzyskanie różnicy w dniach pomiędzy tymi dwiema datami. Podobnie, jeśli chcesz określić datę 60 dni po danej dacie, po prostu dodaj 60 do tej daty.

VBA ma kilka wbudowanych procedur (opisanych w tej sekcji), aby osobno wyodrębnić rok, miesiąc, dzień, godzinę, minutę i sekundę ze zmiennej takiej jak Data.

Wywoływane są dowolne dane tekstowe zapisane w programie VBA linie(smyczki). Ciągi znaków w VBA są zapisywane przy użyciu typu danych Strunowy. Ciągi mają swoją nazwę, ponieważ dane tekstowe są zwykle traktowane jako ciągi znaków. Ciąg może zawierać dowolny typ znaków tekstowych: litery alfabetu, cyfry, znaki interpunkcyjne lub różne symbole. Istnieją dwie kategorie ciągów znaków: ciągi o zmiennej długości, które rosną lub zmniejszają się, oraz ciągi o stałej długości, których rozmiar pozostaje zawsze taki sam. Wszystkie ciągi w VBA są ciągami o zmiennej długości, chyba że określisz stałą długość. Większość danych wprowadzanych przez użytkownika (w oknach dialogowych, komórkach arkusza) to dane w formie ciągów znaków. Ponadto, ponieważ na ekranie można wyświetlać tylko tekst, wszystkie inne typy danych muszą zostać przekonwertowane na dane w postaci ciągu znaków, zanim będzie można je wyświetlić na ekranie. Wiele wbudowanych procedur VBA (np Msgbox) używają danych łańcuchowych we wszystkich lub niektórych argumentach.VBA udostępnia kilka operatorów powiązanie(powiązać), czyli do łączenia i porównywania ciągów. VBA ma także kilka wbudowanych procedur, które pomagają wyodrębnić podciągi z dłuższych ciągów, znaleźć znaki lub słowa w ciągu, zmienić wielkość liter w ciągu i tak dalej. W tej części opisano operatory ciągów VBA i procedury służące do manipulowania ciągami znaków VBA.

Typ danych Wariant to specjalny typ danych, w którym można przechowywać dowolne typy wymienione w tabeli. 9, z wyjątkiem typu Obiekt. VBA używa typu Wariant dla wszystkich zmiennych, chyba że jawnie zadeklarujesz typ zmiennej, jak opisano w dalszej części tej sekcji. Typ danych Wariant przyjmują cechy określonego typu, które obecnie posiadają. Na przykład, jeśli typ danych Wariant zawierać dane ciągu Wariant akceptuje cechy typu String. Jeśli typ danych Wariant zawierać dane liczbowe, Wariant przyjmuje cechy jakiegoś typu liczbowego, zwykle - Podwójnie, chociaż typy Wariant może mieć również cechy typu Liczba całkowita, Długi, Pojedynczy Lub Waluta. Choć typy Wariant Wygodne i zabierają trochę pracy przy pisaniu procedur, wymagają więcej pamięci niż jakikolwiek inny typ danych, z wyjątkiem dużych ciągów znaków. Ponadto operacje matematyczne i operacje porównania na typie danych Wariant są wolniejsze niż podobne operacje na jakimkolwiek innym typie danych. Ogólnie rzecz biorąc, należy unikać używania zmiennych Wariant: jeśli będziesz polegać na zmiennych typu Wariant, możesz nabrać nawyku niechlujnego programowania i mieć trudności ze znalezieniem i naprawieniem błędów w programach.

Zmienne

Zmienny(zmienny) to nazwa, którą programista nadaje obszarowi

pamięć komputera służąca do przechowywania pewnego rodzaju danych. Zmienne VBA mogą przechowywać dowolne typy danych wymienione w tabeli. 9.

Identyfikator(identyfikator) to nazwa nadawana elementom tworzonych procedur i modułów, takim jak zmienne. Termin identyfikator polega na tym, że tworzone przez Ciebie nazwy identyfikują określone miejsca w pamięci (w przypadku nazwy zmiennej), grupy instrukcji (w przypadku nazwy makra lub procedury) lub inne elementy programu.

Nazwy zmiennych nie „wrażliwy” na stan rejestracji(nie sprawa- wrażliwy), czyli to, czy nazwa zmiennej jest napisana wielkimi, czy wielkimi literami, nie ma znaczenia.

Najłatwiejszym sposobem utworzenia zmiennej jest użycie jej w instrukcji VBA. VBA tworzy zmienną i rezerwuje pamięć dla miejsca, w którym zmienna znajduje się w pamięci, gdy zmienna pojawia się po raz pierwszy w instrukcji (zwykle jest to instrukcja przechowująca wartość danych w zmiennej).

Nazywa się przechowywanie wartości danych w zmiennej przypisanie do zmiennej(przypisywanie the zmienny Lub zrobienie jakiś zadanie). Przypisanie odbywa się za pomocą operatora przypisania reprezentowanego przez znak równości (=). Poniższa linia jest przykładem przypisania wartości do zmiennej:

Ta instrukcja przechowuje wartość liczbową 25 w miejscu pamięci określonym przez nazwę zmiennej Mój Var.

Tworzenie zmiennej poprzez użycie jej w instrukcji nazywa się niejawna deklaracja zmiennej(domniemany zmienny deklaracja). Używając zmiennej w instrukcji, pośrednio informujesz (deklarujesz) VBA, że chcesz utworzyć tę zmienną. Wszystkie zmienne tworzone przez VBA poprzez niejawną deklarację zmiennej mają typ danych Wariant. Niejawna deklaracja zmiennej jest również nazywana deklaracją zmiennej "w locie"(NA- the- latać).

Niejawne deklaracje zmiennych są wygodne, ale stwarzają potencjalne problemy. Na przykład, gdy masz zmienną o nazwie Mój Var i popełnisz błąd w nazwie później podczas wpisywania Mvar. W zależności od tego, gdzie w kodzie pojawia się niepoprawna nazwa zmiennej, VBA może zgłosić błąd wykonania lub po prostu utworzyć nową zmienną. Jeśli VBA utworzy nową zmienną, mogą pojawić się problemy, które są bardzo trudne do wykrycia.

Z tych i innych powodów VBA daje taką możliwość wyraźny(wyraźny) deklaracja zmiennych.

Aby jawnie zadeklarować zmienne, użyj instrukcji VBA Ciemny z następującą składnią:

Ciemny nazwa1 [, nazwa2 ]

imięN jest dowolnym prawidłowym identyfikatorem zmiennej. Wszystkie zmienne, które tworzysz za pomocą tej formy słowa kluczowego Ciemny, są zmiennymi

typ Wariant.

Zmienną można zadeklarować tylko raz w osobnej procedurze lub module. Ponieważ instrukcja Dim występuje przed instrukcjami, które faktycznie korzystają ze zmiennej, można ją umieścić w dowolnym miejscu procedury. W praktyce programistycznej dobrą zasadą jest gromadzenie wszystkich jawnych deklaracji zmiennych w jednym miejscu na początku procedury.

Zadanie 2. Zmodyfikuj procedurę WitajExcelu z poprzedniej części, używając jawnej definicji zmiennej.

Dla tego:

b zmienić procedurę WitajExcelu (Lista 4):

Wymienianie kolejno 4 ProceduraWitajExcelu

1 subskrypcja WitamExcel()

2 Dim HelloMsg " zmienna dla MsgBox 3

Operator Ciemny (w linii 2) Listingu 4 deklaruje zmienną Witam, Msg i rezerwuje dla niego obszar pamięci (w tym podprogramie Witam, Msg jest zmienną typu Wariant). Wiersz 2 zawiera końcowy komentarz wskazujący cel tej zmiennej. Linia 4 przypisuje do zmiennej Witam, Msg linie "Cześć,Przewyższać!" . Następnie (w linii 5) zmienna HelloMsg używana jest jako jeden z argumentów procedury MsgBox. Funkcjonować MsgBox wyświetla to samo okno komunikatu, co poprzednio. Chociaż MsgBox otrzymuje teraz swój pierwszy argument ze zmiennej, zmienna ta zawiera tę samą informację w postaci ciągu znaków, która została poprzednio (w listach poprzedniej części) wpisana bezpośrednio do operatora MsgBox.

Wszystkie zmienne w VBA, niezależnie od tego, czy są zadeklarowane pośrednio, czy jawnie, są wariantami, chyba że określisz typ zmiennej w instrukcji, która ją deklaruje. Do ogłoszenia wpisane zmienną i jej typ za pomocą operatora Ciemny dodaj słowo kluczowe As po zmiennej, a następnie wprowadź nazwę typu danych dla tej zmiennej. Oto ogólna składnia używania operatora Ciemny podczas deklarowania zmiennych typowanych:

Ciemny varnamel [, nazwa_zmiennej2 ]

nazwa_zmiennejN reprezentuje dowolną prawidłową nazwę zmiennej VBA, a typ N – dowolna z nazw typów danych VBA.

Po zadeklarowaniu zmiennej typu, niezależnie od tego, czy zmienna jest zadeklarowana jawnie, czy niejawnie i jak określono typ, zmienna ta zachowuje ten sam typ tak długo, jak istnieje. Nie można ponownie zadeklarować zmiennej ani ponownie zdefiniować jej typu.

Za pomocą ukrytej deklaracji można również określić typ zmiennej, dodając

znak specjalny tzw symbol definicji typu(typ- definicja postać), na koniec nazwy zmiennej. W tabeli Rysunek 10 przedstawia symbole definicji typów VBA i typy, które reprezentują. Tabela 10– Symbole definicji typu

Typ

Definicja symbolu

Typ

Symbol definicje

Liczba całkowitaDługi

WalutaPodwójnie

Znaki definicji typu mogą pojawiać się tylko na końcu nazwy zmiennej. Chociaż powinieneś wiedzieć, jakie są symbole definicji typów i jak są używane, rzadko musisz ich używać — użycie instrukcji Dim ze słowem kluczowym As jest znacznie łatwiejsze i wyraźniejsze. Większość programistów VBA nie używa symboli definicji typów.

Zadanie 3. Zmodyfikuj procedurę WitajExcelu z zadania 3, korzystając z definicji zmiennej wpisanej.

Dla tego:

b zmienić procedurę WitajExcelu (Lista 5):

Wymienianie kolejno 5 ProceduraWitajExcelu

1 subskrypcja WitamExcel()

2 Dim HelloMsg jako ciąg 3

    HelloMsg = "Witaj, Excelu!"

    Title$ = „Mój pierwszy program”

    MsgBox WitamWiadomość, Tytuł$

Ta wersja procedury WitajExcelu działa podobnie jak poprzednie. Linia 1 zawiera deklarację procedury. W linii 2 oświadczenie Ciemny jawnie deklaruje zmienną Witam, Msg. Od operatora Ciemny zawiera słowo kluczowe Jak i wpisz nazwę Strunowy, zmienny Witam, Msg ma typ Strunowy. Linia 4 przypisuje tekst komunikatu do zmiennej łańcuchowej Witam, Msg. Linia 5 domyślnie deklaruje zmienną Tytuł$ i jednocześnie przypisuje do zmiennej tekst tytułu okna komunikatu. Ponieważ nazwa zmiennej Tytuł$ kończy się znakiem definicji typu łańcucha, ta zmienna również jest typu String. Wreszcie linia 6 korzysta z operatora MsgBox aby wyświetlić okno komunikatu; w tej instrukcji zarówno tekst komunikatu, jak i pasek tytułu okna są zmiennymi: Witam, Msg I Tytuł$ odpowiednio.

Po dodaniu symbolu definicji typu do zmiennej należy dołączyć symbol definicji typu za każdym razem, gdy używasz nazwy zmiennej.

Niezależnie od tego, czy zadeklarowano zmienne typu Strunowy za pomocą operatora Ciemny lub dodając znak definicji typu $, utworzone zmienne łańcuchowe będą domyślnie ciągami o zmiennej długości.

Zmienne łańcuchowe o zmiennej długości zmieniają długość w zależności od długości ciągu znaków przechowywanego przez zmienną. Czasami może być konieczne użycie linii poprawiona długość(naprawił- długość). Ciągi o stałej długości mają zawsze tę samą długość. Poniższy wiersz przedstawia ogólną składnię tworzenia łańcucha o stałej długości:

Ciemny nazwa_zmiennej Jako ciąg * N

nazwa_zmiennej jest dowolną poprawną nazwą zmiennej, a N – to dowolna liczba od 1 do 65400 znaków

Zakres: zmienna dostępność

Termin zakres(zakres) odnosi się do zakresu procedury lub modułu VBA, w którym dostępna jest dana zmienna, procedura lub inny identyfikator. W tej części opisano dwa podstawowe poziomy zakresu: proceduralny i modułowy. Zmienne, procedury i identyfikatory, które są dostępne tylko w ramach procedury, mają zasięg na poziomie procedury, a te, które są dostępne dla wszystkich procedur w module, mają zasięg na poziomie modułu.

Zmienna zadeklarowana w procedurze jest dostępna tylko przez tę procedurę. Na przykład zmienna Witam, Msg z linii 2 Listingu 5, jest dostępne jedynie w procedurze WitajExcelu; żadna inna procedura nie ma dostępu do tej zmiennej.

Dlatego mówią, że zmienna Witam, Msg To ma zakres na poziomie proceduralnym(procedura- poziom zakres). A właściwie zmienna Witam, Msg naprawdę istnieje tylko wtedy, gdy VBA faktycznie wykonuje procedurę WitajExcelu.

Zadanie 4. Utwórz dwie procedury, których zakres obejmuje zmienne na poziomie proceduralnym.

Dla tego:

b wprowadź dwie zakończone procedury (Listing 6):

Wymienianie kolejno 6 ProceduraWitajExcelu

1 subskrypcja WitamExcel()

2 Dim HelloMsg jako ciąg 3

    HelloMsg = "Witaj, Excelu!"

    MsgBox WitamMsg, "Mój pierwszy program"

8 Sub CześćDave()

9 Dim HelloMsg jako ciąg znaków 10

    HelloMsg = "Dzień dobry, Excelu!"

    MsgBox HelloMsg, „Kolejne okno wiadomości”

Linie 1–6 zawierają tę samą procedurę WitajExcelu z Listingu 4, który działa dokładnie tak samo. Do modułu dodana została procedura Cześć, Dave, który zaczyna się w linii 8 Listingu 6. Procedura Cześć, Dave działa tak samo jak procedura WitajExcelu, wyświetla po prostu inną wiadomość tekstową i tytuł w oknie dialogowym. W liniach 2 i 9 obie procedury korzystają z operatora Ciemny zadeklarować zmienne lokalne z nazwą Witam, Msg.

Czasami konieczne jest, aby kilka procedur miało dostęp do tej samej zmiennej. Zwykle bardziej efektywne jest jednorazowe obliczenie wartości, zapisanie jej w zmiennej, a następnie użycie tej zmiennej w wielu procedurach, niż ciągłe obliczanie tej samej wartości.

VBA pozwala deklarować zmienne, które są dostępne dla wielu procedur. Kiedy zmienna jest dostępna dla wszystkich procedur w module, mówi się, że ma ona zakres poziom modułowy(moduł poziom). VBA ogranicza zakres zmiennej na poziomie modułu do modułu, w którym zmienna jest zadeklarowana (VBA umożliwia dalsze rozszerzanie zakresu zmiennej; metody te opisano poniżej).

Aby udostępnić zmienną wszystkim procedurom w konkretnym module należy umieścić instrukcję Ciemny dla niego na początku modułu przed jakąkolwiek deklaracją procedury.

Ćwiczenie 1

Utwórz dwie procedury i jedną deklarację zmiennej na poziomie modułu (przenieś instrukcję do linii 1 Ciemny ze zmienną Witam, Msg usunięcie linii 2 i 9 z Listingu 6).

Nazwa zmiennej musi być unikalna w swoim zakresie. Możliwe jest jednak włączenie zmiennych o tej samej nazwie różny poziomy zakresu. Kiedy zmienne mają tę samą nazwę, ale różne zakresy, VBA używa zmiennej z największą liczbą lokalny(lokalny) zakres.

Wymaganie jawnej deklaracji zmiennych

Chociaż niejawna deklaracja zmiennych (deklarowanie zmiennych po prostu poprzez ich użycie) jest wygodna, wiąże się z pewnymi problemami. Kiedy zmienne są deklarowane niejawnie, istnieje ryzyko przypadkowego utworzenia nowej zmiennej, podczas gdy w rzeczywistości powinieneś używać istniejącej, lub użycia istniejącej zmiennej, gdy użytkownik zamierza utworzyć nową. Obie te sytuacje prowadzą do błędów w kodzie, które są bardzo trudne do wyśledzenia.

Aby w dowolnym momencie ułatwić wykrycie błędów związanych z niejawnymi deklaracjami zmiennych, VBA udostępnia polecenie OpcjaWyraźny. Za pomocą OpcjaWyraźny VBA wymaga zadeklarowania wszystkich zmiennych (za pomocą operatora Ciemny) przed użyciem ich w module.

Aby ustawić tryb, w którym VBA wymaga jawnych deklaracji wszystkich zmiennych w module, dodaj komendę OpcjaWyraźny do obszaru deklaracji modułu, to znaczy na początek modułu przed deklaracjami zmiennych lub procedur. Polecenia takie jak OpcjaWyraźny, są nazywane dyrektywy kompilatora(kompilator dyrektywy).

Zespół OpcjaWyraźny wpływa tylko na moduł, w którym się pojawia. Jeśli projekt zawierający ten moduł zawiera także inne moduły, polecenie nie ma na nie wpływu OpcjaWyraźny. Musisz dołączyć polecenie Option Explicit do każdego modułu, który wymaga jawnych deklaracji zmiennych.

Od włączenia OpcjaWyraźny we wszystkich modułach jest bardzo przydatne, Edytor VB umożliwia automatyczne dołączenie tego polecenia do każdego nowego modułu podczas jego tworzenia. Aby Edytor VB mógł dodać polecenie OpcjaWyraźny Dla każdego nowego modułu wykonaj następujące kroki:

ь wybierz polecenie Narzędzia/ Opcje (Usługa/Opcje); Edytor VB wyświetla okno dialogowe Opcje;

ь kliknij zakładkę Redaktor (Redaktor) aby wyświetlić opcje edycji, jeśli to konieczne;

ь zaznacz pole wyboru Wymagać Zmienny Deklaracja (Jawny opis zmiennych);

ь wybierz OK. Edytor VB zamyka okno dialogowe Opcje.

Ćwiczenie 2

Ustaw polecenie na automatyczne włączenie Opcja Wyraźny do każdego nowego modułu podczas jego tworzenia.

Stałe

Stały(stały) to wartość w programie VBA, która się nie zmienia. Przykłady procedur podane powyżej wykorzystują stałe łańcuchowe, takie jak "Cześć,Przewyższać!" I „Mój pierwszy program”. Stałe takie jak one nazywane są stałe literalne(dosłowny stałe), ponieważ wartość literału jest zapisywana bezpośrednio w kodzie.

Możesz także pisać stałe liczbowe i daty w kodzie VBA; przykłady stałych literałowych liczb obejmują liczby 25 , 3.14 . Przykładami stałych stałych daty są daty #12/31/96# Lub #28 października 1997#(W dalszej części tej części dowiesz się więcej o pisaniu stałych daty).

VBA pozwala na tworzenie nazwane stałe(o imieniu stałe). Nazwana stała, podobnie jak zmienna, ma nadaną nazwę; nazwa ta reprezentuje określoną, niezmienną wartość. Jednak w przeciwieństwie do zmiennej wartość nazwanej stałej nigdy się nie zmienia. Poniższa linia przedstawia ogólną składnię deklarowania nazwanych stałych:

Konst nazwa = wartość [operator nazwa2… ] _

[, ścieżkaZ =wartość3 [operator nazwa4 ] … ]

imięN reprezentuje dowolny ważny identyfikator, wartośćN – dowolna wartość danych: numeryczna, łańcuchowa lub data, a operator – operacja arytmetyczna lub porównanie dwóch nazw wcześniej opisanych stałych. Poniższe wiersze przedstawiają kilka nazwanych deklaracji stałych: Const Pi = 3.14, tekst = „Witaj Excel!”

Stała Pi2 = 2*Pi

Zakres stałych

Podobnie jak w przypadku zmiennych, nazwane stałe można zadeklarować w procedurach lub w obszarze deklaracji na początku modułu. Stała zadeklarowana w procedurze ma zasięg na poziomie proceduralnym, natomiast stała zadeklarowana w zakresie deklaracji modułu ma zasięg na poziomie modułowym. Stałe nazwane podlegają tym samym regułom zakresu co zmienne.

Zapisywanie stałych dosłownych

Pisząc stałe literałowe w kodzie VBA, postępuj zgodnie z poniższymi zasadami:

ь stałe łańcuchowe muszą być ujęte w cudzysłów (");

ь to pusta stała łańcuchowa (tzw linia zerowazero strunowy Lub pusty strunowy) jest oznaczony dwoma podwójnymi cudzysłowami bez niczego między nimi („”);

b Wszystkie stałe łańcuchowe muszą znajdować się w tej samej linii.

Podczas zapisywania stałych liczbowych w kodzie VBA należy przestrzegać następujących zasad:

ь stałe numeryczne muszą składać się wyłącznie ze znaków numerycznych od 0 do 9;

b stała liczbowa może zaczynać się od znaku (–) i może zawierać kropkę dziesiętną;

b W przypadku stałych liczbowych można zastosować notację wykładniczą.

VBA rozpoznaje stałe daty w dowolnym z kilku różnych formatów; Wszystkie stałe daty należy umieścić pomiędzy znakami funta (#). Poniższe wiersze przedstawiają niektóre formaty stałych daty rozpoznawane przez VBA: #2-5-97 21:17:34# #5 lutego 1997 21:17:34# #Mag-31-97# #15 kwietnia 1997#

Niezależnie od tego, w którym z poniższych formatów zapisana jest stała literałowa typu Date, VBA formatuje stałą (kiedy punkt wstawiania zostanie usunięty z wiersza po zapisaniu stałej), aby była zgodna z jednym z dwóch następujących formatów, w zależności od tego, czy Stała daty zawiera informacje o czasie: #2/5/1997 21:17:34 # #2/5/1997# Istnieją tylko dwie poprawne stałe logiczne: Prawda i Fałsz.

Określanie typu stałego

Kiedy deklarujesz nazwaną stałą lub używasz stałej literału, VBA „uważa”, że wartość reprezentowana przez tę stałą ma

typ danych, który najbardziej pasuje do wyrażenia przypisanego do stałej.

W VBA możesz ustawić typ stałej. Ogólna składnia deklarowania wpisanej stałej jest następująca:

Konst nazwa Jak typ = wartość[, nazwa Jak typ = wartość]

nazwa jest dowolną prawidłową nazwą stałą, typ – nazwa dowolnego typu danych VBA i wartość – wartość, którą przypisujesz stałej.

Poniższa linia ilustruje poprawną deklarację stałej określonego typu:

Stała Pi jako podwójna = 3,14

Domowystałe

VBA udostępnia kilka stałe wewnętrzne(wewnętrzny stałe), nazywane również predefiniowane stałe(predefiniowane stałe). Stała wewnętrzna to nazwana stała zdefiniowana przez programistów VBA. Wszystkie stałe wewnętrzne zdefiniowane w VBA zaczynają się od liter vb aby wskazać, że są one zdefiniowane przez język Visual Basic for Applications (lub Visual Basic). Na przykład stałe vbOKTylko, vbOKAnuluj są definiowane przez VBA. Stałe wewnętrzne programu Excel 2002 zaczynają się od liter XL aby było jasne, że są one zdefiniowane przez Excel. Dzięki stałym wewnętrznym łatwiej jest korzystać z niektórych wbudowanych procedur VBA, takich jak instrukcja MsgBox, o którym już wiesz, oraz operator Pole wprowadzania, które zostaną omówione w dalszej części tej części.

Wyświetl okna wiadomości. Odbieranie danych od użytkownika

Odebranie danych od użytkownika, zapisanie ich w zmiennej i wyświetlenie wyników wykonanych na nich działań to podstawowe elementy potrzebne do napisania procedur interaktywnych. Interaktywny(interaktywny) procedura to procedura wymieniająca informacje z użytkownikiem, to znaczy procedura wchodzi w interakcję z użytkownikiem poprzez wyświetlanie komunikatów i otrzymywanie danych wejściowych.

Funkcjonować MsgBox wyświetlanie okna komunikatu ma następującą składnię:

MsgBox(Podpowiedź [, guziki ] [, Tytuł ] [, Plik pomocy , Kontekst ])

argument Podpowiedź MsgBox wyświetla tę linię w oknie dialogowym; zawsze musi podać jakiś argument Podpowiedź, skoro tak jest wymagany argument(wymagany argument). Argument guziki (argument opcjonalny) to wyrażenie numeryczne określające przyciski i komunikaty wyświetlane w oknie dialogowym. Argument Tytuł reprezentuje dowolną wartość ciągu (literał, stałą lub zmienną). MsgBoxTytuł, VBA wyświetla się na pasku tytułu okna dialogowego MsgBox słowo " MicrosoftuPrzewyższać" . Argument Plik pomocy – plik pomocy, Kontekst – sekcja w pliku pomocy. Tekst komunikatu można ująć w nawiasy, ale w przypadku funkcji nawiasy są opcjonalne MsgBox

używany jako operator.

Dane wprowadzone przez użytkownika nazywane są dane wejściowe(wejście). Aby otrzymać dane wejściowe od użytkownika procedury, użyj funkcji Pole wprowadzania. Funkcjonować(funkcjonować) to specjalny typ procedury VBA, która zwraca wartość. Funkcjonować Pole wprowadzania wyświetla okno dialogowe zawierające tekst monitujący użytkownika o wprowadzenie wartości oraz pole tekstowe umożliwiające wprowadzenie tej wartości. Wyświetlone okno dialogowe Pole wprowadzania, zawiera także przyciski poleceń OK I Anulować.

Funkcjonować Pole wprowadzania ma następującą składnię:

zmienna string=Pole wejściowe( Podpowiedź[, Tytuł] [, Domyślny] [, XPos] [, YPoz] _

[, Plik pomocy, Kontekst])

Tutaj zmienna string reprezentuje dowolną zmienną, w której można przechowywać ciąg znaków (lub zmienną typu Strunowy, Lub - Wariant). Argument Podpowiedź reprezentuje dowolną wartość ciągu (literał, stałą lub zmienną). Pole wprowadzania wyświetla ten ciąg jako monit w oknie dialogowym; zawsze musi podać jakiś argument Podpowiedź, skoro tak jest wymagany argument; wszystkie inne są opcjonalne. Argument Tytuł to drugi argument za Pole wprowadzania. Tytuł reprezentuje dowolną wartość ciągu (literał, stałą lub zmienną). Pole wprowadzania wyświetla tekst tego ciągu na pasku tytułu okna dialogowego. Jeśli pominiesz argument Tytuł, język VBA zostanie wyświetlony na pasku tytułu okna dialogowego Pole wprowadzania słowo " MicrosoftuPrzewyższać" . Argument Domyślny – wyrażenie tekstowe wyświetlane w polu wejściowym domyślnie, jeśli użytkownik nie wprowadzi innego ciągu znaków; jeśli ten argument zostanie pominięty, pole wejściowe stanie się puste. Argumenty XPos I YPoz mogą być dowolnymi wyrażeniami numerycznymi. Argumenty te pozwalają określić, gdzie w aktywnym oknie pojawia się okno wejściowe i są współrzędnymi lewego górnego rogu okna dialogowego: XPos – odległość pozioma od lewej krawędzi okna; YPoz – jest to odległość w pionie od górnej krawędzi okna. Obie odległości mierzone są w skrętach ( skręty); Jeden skręt jest równy 1/20 punktu (punkt to miara czcionki drukowanej). Ponieważ kropka ma długość 1/72 cala, jeden obrót wynosi w przybliżeniu 0,0007 cala. Ostatnie dwa opcjonalne argumenty funkcji Pole wprowadzania- Ten Plik pomocy I Kontekst. Mają ten sam cel, co podobne argumenty funkcji MsgBox.

Używanie argumentów funkcji nazwanych

Jak być może zauważyłeś, łatwo jest przypadkowo pominąć przecinki lub zmienić kolejność wartości argumentów w funkcjach, które mają opcjonalne argumenty lub wiele argumentów, pomimo pomocy właściwości Automatyczny Szybki (Krótka informacja) Edytor VB. Pomijanie lub zmiana kolejności argumentów na liście argumentów funkcji może skutkować błędami niezgodności typów. Błąd (jeszcze gorszy) może nie zostać wykryty. Aby zapobiec błędom programistycznym i ułatwić korzystanie z funkcji posiadających opcjonalne argumenty, VBA udostępnia alternatywę dla umieszczania wartości na liście argumentów w określonej kolejności. Możesz także przenieść

wartości argumentów funkcji za pomocą nazwane argumenty(o imieniu argumenty) Funkcje. Poniższe wiersze przedstawiają dwie instrukcje MsgBox, które mają ten sam wynik; Pierwsza instrukcja wykorzystuje zwykłą metodę wyliczania argumentów, a druga używa nazwanej metody argumentu:

MsgBox AnyMsg, AnyTitle

MsgBox Prompt:=Dowolna wiadomość, Tytuł:=Dowolny tytuł

Symbol przypisujący wartość do nazwanego argumentu (:=) nie jest dokładnie taki sam, jak zwykły operator przypisania (=). Jeśli pominiesz dwukropek (:) podczas przypisywania wartości do nazwanego argumentu, VBA niekoniecznie wykryje błąd składniowy, ale może nieprawidłowo zinterpretować instrukcję. Kiedy VBA wykonuje tę instrukcję, wyświetla jeden z kilku możliwych błędów wykonania, często błąd niezgodności typu.

Nie można mieszać nazwanych argumentów ze zwykłą listą argumentów w tym samym wywołaniu funkcji. Dla każdego indywidualnego wywołania funkcji należy użyć nazwanych argumentów lub listy zwykłych argumentów.

Zadanie 5. Napisz procedurę, która oblicza pole koła, ale pobiera promień okręgu od użytkownika procedury.

Dla tego:

Wejdź w procedurę (Listing 7):

Lista 7 – Odbiór danych wejściowych za pomocą operatoraPole wprowadzania

    Const Pi As Single = 3,14 "przybliżenia wartości pi

    Dim CircleArea As Single” zapisuje obliczoną powierzchnię okręgu 3

4 lista podrzędna3_07()

    Const BoxTitle = "Pole okręgu"!}

    Przyciemnij promień jako pojedynczy, temperatura jako ciąg 7

    Temp = InputBox("Wprowadź promień " & Chr(13) & "okrąg", BoxTitle)

    Promień = CSng (temp.)

    CircleArea = Pi * Promień * Promień

    MsgBox CircleArea, vbInformation + vbOKCancel, BoxTitle

Linie 1 i 2 Listingu 7 deklarują stałą Liczba Pi i zmienna Obszar okręgu poziom modułowy. Linia 4 zawiera właściwą deklarację procedury. Linia 5 deklaruje stałą poziomu procedury Tytuł pudełka; ta stała ma w procedurze dostęp tylko lokalny Lista3_07. W linii 8 instrukcja wywołuje funkcję Pole wprowadzania. Wyświetla swój pierwszy argument jako tekst w oknie dialogowym, zachęcając użytkownika do wprowadzenia wartości pewnego typu. W tym stwierdzeniu Pole wprowadzania wyświetla tekst „Wprowadź promień okręgu” (funkcja Chr(13) - znak nowej linii), aby poinformować użytkownika procedury, jaką wartość powinien wprowadzić. Pole wprowadzania używa drugiego argumentu,

12 Koniec podst

reprezentowana przez stałą Tytuł pudełka jako tytuł okna dialogowego. Podczas wykonywania instrukcji Pole wprowadzania wyświetli się okno dialogowe (rys. 16)

Pole koła

Podaj promień okręgu

Ryż. 16 Użytkownik wprowadza liczbę w polu tekstowym i wybiera przycisk polecenia OK Lub Anulować aby zamknąć okno dialogowe, tak jak każde inne okno systemu Windows. Ilekroć wywołujesz jakąkolwiek funkcję, musisz w jakiś sposób wykorzystać wartość zwracaną przez tę funkcję. Wywoływana jest wartość zwracana przez funkcję wynik funkcji(funkcjonować wynik). Jak pokazano w linii 8 w przypadku funkcji Pole wprowadzania, którego wynik jest przypisywany do zmiennej Temp. Wynik funkcji Pole wprowadzania jest zawsze ciągiem znaków (dlatego zmienna Temp został ogłoszony jako Strunowy). Ponieważ zmienna Temp został wyraźnie ogłoszony jako Strunowy, wartość ciągu musi zostać przekonwertowana na wartość liczbową, zanim będzie można jej użyć w obliczeniach matematycznych. Linia 9 Listingu 7 właśnie to robi, używając wbudowanej funkcji VBA CSng aby przekonwertować dane wprowadzone przez użytkownika na liczbę typu Single.

Wyrażenia wWizualnyPodstawowy

Wyrażenie(wyrażenie) to wartość lub grupa wartości wyrażająca pojedynczą wartość. Każde wyrażenie obliczone na(lub ma skutek) odrębne znaczenie. Wyrażenia składają się z jednej lub więcej następujących części: stałe (literalne lub nazwane), zmienne (dowolnego typu danych), znaki operatorowe, tablice, elementy tablicy, funkcje.

Wszystkie wyrażenia dają w wyniku pojedynczą wartość określonego typu danych. Wyrażenia mogą również skutkować jedną z wartości specjalnych Pusty(niezainicjowana zmienna typu Wariant lub wynik wyrażenia zawierającego niezainicjowaną zmienną typu Wariant) Lub Zero(Zero reprezentuje wyrażenie zawierające nieprawidłowe dane). Kiedy w wyrażeniu używasz znaku, elementy danych (zmienne lub stałe), na których wykonywana jest akcja, nazywane są operandy(operandy); większość operacji wymaga dwóch operandów.

Zgodność typów danych. Automatyczna konwersja danych

Nie wszystkie typy danych są ze sobą kompatybilne i nie można używać niezgodnych typów danych w tym samym wyrażeniu. Na przykład arytmetyczne dodanie ciągu znaków do liczby nie ma sensu, ponieważ takie wyrażenie nie ma sensu i VBA nie jest w stanie go obliczyć.

Wiele typów danych jest ze sobą kompatybilnych. Na przykład możesz

łączyć różne typy danych liczbowych w tym samym wyrażeniu; VBA automatycznie wykonuje niezbędne konwersje typów dla różnych typów liczbowych. VBA może czasami automatycznie konwertować inne typy danych, tak aby wszystkie typy w wyrażeniu były kompatybilne, chociaż nie zawsze jest to możliwe. Bardzo ważne jest kontrolowanie i znajomość typu wyrażenia, ponieważ jeśli wyrażenia zawierają niezgodne typy, VBA zgłasza błąd wykonania - błąd niezgodność typu(typ- niedopasowanie). Podczas przetwarzania wyrażenia zawierającego różne typy danych, VBA najpierw „próbuje” rozwiązać wszelkie różnice typów, konwertując wartości w wyrażeniu na zgodne typy danych. Jeśli konwersja typów nie usunie żadnych różnic, zostanie wyświetlony błąd wykonania i procedura zostanie zatrzymana. Na przykład w wyrażeniu 25 & Computer Science język VBA zawsze wykonuje konkatenację ciągów (łączenie ze sobą dwóch ciągów), niezależnie od typów zmiennych; wynikiem jest typ Strunowy; to wyrażenie nigdy nie powoduje błędu niezgodności typu.

VBA zazwyczaj konwertuje wszystkie typy danych liczbowych w wyrażeniu na typ o najwyższej precyzji, a następnie dodaje ten typ do wyniku wyrażenia. Na przykład, jeśli wyrażenie zawiera wartości liczbowe z typami Liczba całkowita I Pojedynczy, wynikiem wyrażenia jest typ Pojedynczy– rodzaj największej precyzji w tym wyrażeniu. Jeśli wynik wyrażenia numerycznego przypiszesz do zmiennej z mniejszą precyzją niż rzeczywisty typ wyniku wyrażenia, VBA zaokrągli wynik wyrażenia, aż jego precyzja będzie odpowiadać oczekiwanemu typowi. Na przykład, jeśli przypiszesz wyrażenie numeryczne, którego wynikiem będzie liczba typu Podwójnie, typ zmienny Liczba całkowita, VBA zaokrągla liczbę do wpisania z podwójną precyzją Liczba całkowita.

Kiedy konwertujesz liczbę na ciąg znaków, VBA tworzy ciąg znaków zawierający wszystkie cyfry tej liczby i miejsce dziesiętne (jeśli liczba je posiada). Na przykład liczba 3413,72 (kropka służy do zapisu liczby w kodzie) jest konwertowana na ciąg „3413,72”. Jeśli liczba jest bardzo duża lub bardzo mała, VBA może utworzyć ciąg znaków reprezentujący liczbę w notacji naukowej; na przykład liczba 0,0000000004927 jest konwertowana na ciąg „4,927E–11”.

VBA może przekonwertować ciąg na liczbę tylko wtedy, gdy ciąg zawiera symboliczną reprezentację liczby w notacji dziesiętnej lub naukowej. Ciągi „988,6”, „812”, „-186,7”, „1,ZE10” reprezentują liczby, a VBA może je przekonwertować na liczby. Linie „1045”, „74 550 dolarów” i „Dzień dobry!” nie da się przeliczyć na liczby.

Kiedy VBA konwertuje wartości typu Wartość logiczna w liczbach, czyli PRAWDA jest konwertowany na 1 i wartość FAŁSZ– na 0. Gdy VBA konwertuje liczbę na typ Wartość logiczna, zero jest konwertowane na FAŁSZ, a dowolna inna wartość jest konwertowana na PRAWDA. Kiedy VBA konwertuje wartości typu Wartość logiczna do łańcuchów, VBA używa ciągu „True”. PRAWDA i „Fałsz” – za FAŁSZ.

Kiedy VBA konwertuje typ danych Data na liczbę, wynikiem jest wartość liczbowa - liczba typu Podwójnie, który zawiera liczbę dni od 30 grudnia 1899 r. (liczba ujemna oznacza datę wcześniejszą niż 30.12.1899 r.). Część dziesiętna liczby (jeśli występuje) wyraża porę dnia jako część

dzień; 0 to północ, a 0,5 to południe. W VBA konwersja numerycznych typów danych na typy Data jest po prostu odwrotnością konwersji typu Data liczebnie.

Operator przypisania (=)

Operator ten służy do przypisania wyniku wyrażenia do zmiennej. Składnia formularza operatora przypisania jest następująca:

nazwa_zmiennej = wyrażenie

zmienny nazwa_zmiennej - dowolna zmienna, a wyrażenie - dowolne wyrażenie.

Kiedy wykonujesz operator przypisania, VBA najpierw ocenia wyrażenie znajdujące się po prawej stronie operatora przypisania (=), a następnie przechowuje wynik wyrażenia w zmiennej, której nazwa znajduje się po lewej stronie operatora przypisania.

Ilustracja operatora przypisania na schemacie blokowym:

nazwa_zmiennej = wyrażenie

Gdy przypiszesz wynik wyrażenia do zmiennej o określonym typie danych, wynik ten może mieć typ danych zgodny z typem zmiennej otrzymującej nową wartość. W wielu przypadkach VBA może skonwertować typ danych wyniku wyrażenia na typ zgodny z typem zmiennej otrzymującej nową wartość, jeśli wynik wyrażenia i zmienna nie mają jeszcze kompatybilnych typów. Typ zmienny Wariant można przypisać dowolny typ danych.

Działania arytmetyczne

VBA może wykonywać wszystkie zwykłe operacje arytmetyczne (realizowane za pomocą wyrażeń arytmetycznych): dodawanie, odejmowanie, mnożenie i dzielenie, a także podnoszenie liczb do określonej potęgi, a także zapewnia dodatkowe specjalne operacje matematyczne dotyczące dzielenia liczb całkowitych i dzielenia modulo (Tabela 11).

Tabela 11- Znaki operacji (notacje) używane w wyrażeniach arytmetycznych VBA (Ni to dowolne prawidłowe wyrażenie numeryczne VBA)

Podpisać

Składnia

Nazwa/Opis

Dodatek. Dodaje N1 do N2

Odejmowanie. Odejmuje N2 od N1

Mnożenie. Mnoży N1 przez N2

Dział. Dzieli N1 przez N2.

Dzielenie całkowite. Dzieli N1 przez N2, odrzucając część ułamkową, tak aby wynik był liczbą całkowitą.

Podział modulo. Dzieli N1 przez N2, zwracając tylko resztę operacji dzielenia.

Potęgowanie. Podnosi N1 do potęgi N2.

Oba operandy muszą być wyrażeniami numerycznymi lub ciągami znaków, które VBA może przekonwertować na liczbę.

Operacje porównawcze

Czasami nazywane są także operacje porównania operacje relacyjne(relacyjny operatorzy). Najczęściej operacje porównania służą ustaleniu kryteriów podjęcia decyzji lub sformułowaniu opisu warunków, w jakich należy powtórzyć grupę poleceń (organizacja cykli).

Wynikiem dowolnej operacji porównania jest wartość typu Wartość logiczna: PRAWDA Lub FAŁSZ. Operatory porównania służą do porównywania wartości literałów, stałych lub zmiennych dowolnego podobnego typu (Tabela 12).

Nazwa/opis

Równość. PRAWDA , JeśliElrówna się E2, w przeciwnym razie –FAŁSZ

Mniej niż. PRAWDA , JeśliElmniej niż E2, w przeciwnym razie –FAŁSZ

Mniejszy lub równy.PRAWDA, jeśli E1 jest mniejsze lub równe

E2, inaczej –FAŁSZ

Więcej niż. PRAWDA , jeżeli E1 jest większe od E2, w przeciwnym razie –FAŁSZ

Większe bądź równe.PRAWDA, jeśli E1 jest większe lub równe

E2, inaczej –FAŁSZ

Nie równe.PRAWDA, jeśli E1 nie jest równe E2, w przeciwnym razie – FAŁSZ

Obiekt. PRAWDA, jeśli El odnosi się do tego samego obiektu co E2, inaczej –FAŁSZ Podobieństwo. Oba operandy muszą być wartościami typu

Tabela 12– Symbole porównania (E w tej tabeli reprezentuje dowolne prawidłowe wyrażenie VBA)

Operacja/Operator

Składnia

F

przykład,

Strunowy. PRAWDA, jeśli El pasuje

Porównanie ciągów binarnych i tekstowych

VBA udostępnia dwa różne sposoby porównywania znaków w różnych przypadkach. Pierwsza metoda używana przez VBA do porównywania ciągów nazywa się binarny (dwójkowy) lub porównanie binarne i jest domyślną metodą porównania. Aby wybrać metodę porównywania ciągów VBA (binarną lub tekstową), użyj dyrektywy OpcjaPorównywać:

Opcja Porównaj [ Dwójkowy | Tekst]

Podczas porównywania tekstu VBA „traktuje” wielkie litery jako odpowiedniki małych liter.

Łączenie ciągów

VBA umożliwia łączenie (sklejanie) ciągów znaków w celu utworzenia dłuższych ciągów. Nazywa się dołączanie jednego ciągu do drugiego powiązanie(powiązanie) linie. Znaku & można używać tylko do łączenia ciągów. Ogólna składnia znaku & jest następująca:

Operand1 & Operand2 [& Operand3… ]

Operand1 I Operand2 – dowolne prawidłowe wyrażenia łańcuchowe lub numeryczne. Jeśli jeden lub oba operandy są wyrażeniami numerycznymi, VBA przed wykonaniem operacji łączenia konwertuje liczby na ciągi znaków. Typ danych wyniku łączenia ciągów jest zawsze typem Strunowy.

Operatory logiczne

Najczęstsze zastosowania operatorów logicznych VBA to łączenie wyników poszczególnych wyrażeń porównawczych w celu utworzenia złożonych kryteriów decyzyjnych w procedurze lub stworzenia warunków, w których należy powtórzyć grupę instrukcji (Tabela 13).

Tabela 13– Operatory logiczne (E w tej tabeli reprezentuje dowolne prawidłowe wyrażenie z wynikiem boolowskim, takie jak operator porównania)

Operator Składnia Nazwa/Opis

Oraz El i E2 Spójnik. PRAWDA, jeśli zarówno E1, jak i E2 są znaczące

PRAWDA , W przeciwnym razie -FAŁSZ Lub El lub E2 Dysjunkcja. PRAWDA, jeśli jedno wyrażenie lub oba (E1 i

E2) są równePRAWDA ; W przeciwnym razie -FAŁSZ Nie, nie El Negacja. PRAWDA, jeśli E1 ma wartość FAŁSZ; FAŁSZ,

JeśliEljest równyPRAWDA

Wyjątek. PRAWDA, jeśli E1 i E2 są różne

wartości; W przeciwnym razie -FAŁSZ

Równorzędność. PRAWDA, jeśli E1 ma to samo

znaczenie takie samo jak E2; W przeciwnym razie -FAŁSZ

Implikacja. FAŁSZ, gdy E1 jest równe PRAWDA I

E2 jest równeFAŁSZ ; W przeciwnym razie -PRAWDA .

Priorytety operacji przy ocenie wyrażeń złożonych

Złożony(mieszanina) wyrażenie(złożony wyrażenie) to dowolne wyrażenie utworzone z dwóch lub większej liczby wyrażeń. Wiele z wyrażeń, które piszesz, to wyrażenia złożone, szczególnie jeśli kontrolują kolejność kodu w procedurach lub reprezentują różne formuły matematyczne (Tabela 14).

Tabela 14– Hierarchia instrukcji/operacji od najwyższego do najniższego priorytetu

Operator/znak Komentarze

Potęgowanie, najwyższy priorytet

Jednoargumentowy minus

Mnożenie i dzielenie mają równy priorytet; są one oceniane w sposób, w jaki pojawiają się w wyrażeniu od lewej do prawej

Dodawanie i odejmowanie mają równy priorytet; są one oceniane w sposób, w jaki pojawiają się w wyrażeniu od lewej do prawej

Całe łączenie ciągów znaków jest wykonywane po wszelkich operacjach arytmetycznych w wyrażeniu i przed jakimkolwiek porównaniem lub operacjami logicznymi

<, <=, >, >=,

Lubię, =,<>, Jest

Wszystkie operatory porównania mają równy priorytet i są oceniane w sposób, w jaki pojawiają się w wyrażeniu od lewej do prawej. Do grupowania operatorów porównania w wyrażeniach używaj nawiasów

Korzystanie z funkcjiVisual Basic

Czy korzystałeś już z wbudowanych funkcji VBA: Pole wprowadzania I MsgBox. Funkcjonować(funkcjonować) to wbudowana formuła, która wykonuje operacje na wyrażeniach i generuje wartość. Funkcja zawsze zwraca wartość, którą VBA wstawia do programu, w którym pojawia się nazwa funkcji. Funkcje VBA podzielone są na kilka grup w zależności od rodzaju wykonywanych przez nie operacji lub obliczeń. Nie myl pojęć funkcjonować I procedura. Zwykle procedura wykonuje określone zadanie (lub grupę zadań), podobnie jak określone polecenie menu w programie Excel, Word lub innej aplikacji wykonuje określone zadanie. Funkcja działa na jednej lub większej liczbie wartości i zwraca pewną wartość wynikową (jak formuła w komórce w arkuszu programu Excel). Aby użyć funkcji, wystarczy wprowadzić nazwę funkcji do instrukcji VBA wraz ze wszystkimi argumentami wymaganymi przez funkcję w miejscu instrukcji, w którym należy użyć wyniku funkcji. Umieszczenie nazwy funkcji w instrukcji VBA w celu wywołania tej funkcji jest wywoływane wyzwanie(powołanie) Funkcje.

Wbudowane funkcje VBA są podzielone na kilka kategorii w zależności od ogólnego przeznaczenia funkcji (matematyczne, konwersja danych, data i godzina, ciągi znaków i manipulowanie dyskiem).

Funkcje matematyczne

VBA udostępnia standardowy zestaw funkcji matematycznych (Tabela 15). Tabela 15– Funkcje matematyczne VBA (N oznacza dowolne wyrażenie numeryczne)

Zwroty/Działanie

Funkcje (ar-

gumy)

Zwraca wartość bezwzględnąN

Abs(N)

Cosinus kątaN, GdzieN

Sałata(N)

Zwraca sinus kąta;Njest kątem mierzonym w radianach

Grzech(N)

Dębnik(N)

Zwraca tangens kąta;N– kąt w radianach

Do godz(N)

Zwraca arcus tangensNjako kąt w radianach

Zwraca stałą mi, podniesione do potęgi N ( mi jest podstawą logarytmów naturalnych i jest (w przybliżeniu) równa się 2,718282)

Zwraca część całkowitą N. Fix nie zaokrągla liczby, ale odrzuca część ułamkową. Jeśli N jest ujemne, Fix zwraca najbliższą ujemną liczbę całkowitą większe bądź równeN

Dziennik(N)

Zwraca część całkowitą N. Int nie zaokrągla liczby, ale odrzuca część ułamkową. Jeśli N jest ujemne, Int zwraca najbliższą ujemną liczbę całkowitą mniejszy lub równyNZwraca logarytm naturalnyN

losowy

argument

Jest

Zwroty

opcjonalny. Funkcji Rnd używaj dopiero po

inicjowanie generatora liczb losowych VBA za pomocą operatora

Losuj

Zwraca znak liczby: –1 jeśli N jest ujemne; 1 jeśli N –

pozytywny; 0 jeśliNrówna się 0

Zwraca pierwiastek kwadratowy z N. VBA wyświetla błąd

czas wykonania, jeśliN- negatywny

Funkcje konwersji danych

Visual Basic udostępnia kilka funkcji umożliwiających konwersję jednego typu danych na inny (Tabela 16). Użyj tych funkcji, aby rozwiązać błędy niezgodności typów i zapewnić jawną kontrolę nad typami danych w wyrażeniach.

Tabela 16– Funkcje konwersji danych (N to dowolna liczba, S to dowolny ciąg znaków, a E to dowolne wyrażenie)

Funkcja (ar- Zwroty/Akcjagumy)

Zwraca numer kodu znaku odpowiadający pierwszej literze linieS. Na przykład litera „A” ma kod znaku 65

Funkcja (argumenty)

Zwroty/Działanie

Zwraca jednoznakowy ciąg odpowiadający kodowi znaku N, który musi być liczbą z zakresu od 0 do 255 włącznie. Na przykład kod znaku 65 zwraca literę „A” (Chr(13) to znak powrotu karetki, Chr(10) to znak przesunięcia o jedną linię)

Zwraca ciąg zawierający wartość reprezentowaną przez wyrażenie E, sformatowany zgodnie z instrukcjami zawartymi w S

Zwraca ciąg znaków zawierający szesnastkową reprezentację N

Oct(N) Zwraca ciąg znaków zawierający ósemkową reprezentację N

Zwraca liczbę całkowitą typu Długi, reprezentujący wartość podstawowych kolorów obrazu. N w każdym argumencie musi być liczbą całkowitą z zakresu 0–255 włącznie. Argumenty (od lewej do prawej) to wartości koloru czerwonego, zielonego i niebieskiego

Str(N) Zwraca ciąg znaków odpowiadający wyrażeniu numerycznemu N

Zwraca wartość liczbową odpowiadającą liczbie reprezentowanej przez ciąg S, który może zawierać tylko cyfry i jeden przecinek, w przeciwnym razie VBA nie będzie mógł jej przekonwertować na liczbę. Jeśli VBA nie może przekonwertować ciągu na S, funkcja Val zwraca 0

CBool(N) Zwraca logiczny odpowiednik wyrażenia numerycznego N

Bajt(od 0 do 255); E – dowolne prawidłowe wyrażenie numeryczne lub łańcuchowe, które można przekonwertować na liczbę

Zwraca wartość liczbową typu Waluta

Zwraca wartość typu Data. E może być dowolnym prawidłowym wyrażeniem (ciągiem lub liczbą) reprezentującym datę z zakresu 1/1/100 12/31/9999 , włącznie

Zwraca wartość liczbową typu Podwójnie, które można przekonwertować na liczbę

Zwraca wartość liczbową typu Liczba całkowita; E – dowolne prawidłowe wyrażenie numeryczne lub łańcuchowe, które można przekonwertować na liczbę

Zwraca wartość liczbową typu Długi; E – dowolne prawidłowe wyrażenie numeryczne lub łańcuchowe, które można przekonwertować na liczbę

Funkcja (argumenty)

Zwroty/Działanie

Zwraca wartość liczbową typu Pojedynczy; E – dowolne prawidłowe wyrażenie numeryczne lub łańcuchowe, które można przekonwertować na liczbę

Zwraca wartość typu Strunowy; E – dowolne prawidłowe wyrażenie numeryczne lub łańcuchowe

Zwraca wartość typu Wariant; E – dowolne prawidłowe wyrażenie numeryczne lub łańcuchowe

Funkcje daty i czasu

Funkcje daty i godziny języka VBA są zwykle używane do uzyskiwania bieżącej daty i godziny, dzielenia wartości daty na części składowe lub konwertowania ciągów znaków i liczb na wartości takie jak Data(Tabela 17).

Tabela 17– Funkcje daty i czasu (N to dowolne prawidłowe wyrażenie numeryczne, a D to dowolne prawidłowe wyrażenie, np Data(w tym wartości takie jak Data, liczby lub ciągi znaków, które VBA może przekonwertować na datę); wszystkie argumenty funkcji są wymagane, chyba że zaznaczono inaczej)

Zwroty/Działanie

Funkcje (ar-

gumy)

Zwraca datę systemową. Funkcji tej można także użyć jako procedury ustawiania zegara systemowego komputera. Więcej szczegółów można znaleźć w podręczniku. systemyVBA

Zwraca czas systemowy komputera jako wartość typu Data. Możesz także użyć tej funkcji jako procedury ustawiania zegara systemowego. Więcej szczegółów można znaleźć z systemu pomocyVBAZwraca datę i godzinę systemową

Data I

Zwraca liczbę całkowitą będącą częścią wyrażenia typu Data,

włącznie

Zwraca liczbę całkowitą będącą częścią wyrażenia typu Data I

Dzień powszedni(D) Godzina(D)

włącznie

Zwraca liczbę całkowitą zawierającą dzień tygodnia dla wyrażenia typu

Data. Dzień tygodnia zwracany jest jako liczba z zakresu od 1 do 7,

włącznie; 1 to niedziela, 2 to poniedziałek i tak dalej

Zwraca liczbę całkowitą zawierającą godziny jako część czasu,

liczba z zakresu od 0 do 23 włącznie. Jeśli wyrażenie D nie jest

zawiera zatem wartości czasuGodzinazwraca 0

Funkcje (ar-gumy)

DataDodaj(S, N, D)

DataSerial(N, N, N)

CzasSerial(N, N, N)

Zwroty/Działanie

Zwraca liczbę całkowitą zawierającą minuty jako część czasu

typ wyrażenia Data. Minuty są zwracane jako liczba z zakresu od 0

i 59 włącznie. Jeśli wyrażenie D nie zawiera wartości

czas,Minutazwraca 0

Zwraca liczbę całkowitą zawierającą sekundy jako część czasu

typ wyrażenia Data. Sekundy są zwracane jako liczba pomiędzy

0 i 59 włącznie. Jeśli wyrażenie D nie zawiera wartości

czas,Drugizwraca 0

Zwraca wartość [typ Wariant(Data)], zawierający datę do

DateDiff(S, D1, Zwraca [typ Wariant(Długi)] liczba tymczasowych D2[,Nl [, N2 ]]) odstępy między dwiema określonymi datami DatePart(S, D, [, Zwraca określoną część [typ Wariant(Liczba całkowita)] N1 [, N2]]) podana data

do którego dodawany jest określony przedział czasu

Zwraca kolejną wartość daty dla podanej daty. Od lewej do prawej argumenty reprezentują rok, miesiąc i dzień. Argument rok musi być liczbą całkowitą z zakresu od 100 do 9999, miesiąc musi mieścić się w przedziale od 1 do 12, dzień musi należeć do przedziału od 1 do 31 (wszystkie zakresy są włącznie)

Zwraca wartość czasu seryjnego. Od lewej do prawej argumenty reprezentują godziny, minuty i sekundy. Argument godziny musi być liczbą całkowitą z zakresu od 0 do 23 minuty i sekundy muszą być liczbami z zakresu od 0 do 59 Zwraca wartość typu Data, odpowiednik daty określonej przez argument E, który musi być ciągiem znaków, liczbą lub stała reprezentująca datę

północy według czasu systemu komputerowego Niektóre z wymienionych funkcji zostały już wykorzystane w przykładach w tej książce, inne zostaną wykorzystane w dalszej części.

Funkcje łańcuchowe

Funkcje łańcuchowe języka VBA są często używane do wyszukiwania określonych ciągów w innych ciągach, porównywania jednego ciągu z drugim i kopiowania wybranych fragmentów ciągów (Tabela 18).

Zwraca wartość typu Data, zawierający czas określony argumentem E, który może być ciągiem znaków, liczbą lub stała reprezentująca czas Zwraca liczbę reprezentującą liczbę sekund od

Tabela 18– Funkcje łańcuchowe (N to dowolne prawidłowe wyrażenie numeryczne, a S to dowolne prawidłowe wyrażenie łańcuchowe)

guma)

Zwraca pozycję S2 w S1. N1 – pozycja początkowa dla

szukaj; N2 określa rodzaj porównania. N1 i N2 są opcjonalne. Jeśli pominięto N2, do wyszukiwania zostanie użyty bieżący instalacjaOpcja Porównywać InStrRev(Sl, S2 Zwraca pozycję, w której ciąg S2 pojawia się wewnątrz S1

[, Nl[, N2]]) LCaza(S)

Len(S) LTrim(S)

Spacja (N) StrComp(Sl, S2, N)

w kierunku od końca (lub N1) do początku linii. N2 określa rodzaj porównania. Jeśli pominięto N2, do wyszukiwania używane jest użycie bieżąca instalacjaOpcja Porównywać

Zwraca ciąg (typ Strunowy), zawierający kopię S ze wszystkimi wielkimi znakami zamienionymi na znaki małe litery

Zwraca ciąg; kopiuje N znaków z S, zaczynając od lewej ostatni znakS

Zwraca liczbę znaków w S, w tym znaki początkowe i końcowe spacje

od lewej strony linii (spacje wiodące) Zwraca ciąg; kopiuje N2 znaków z S, zaczynając od pozycji znaku w S określonej przez N1. N2 jest opcjonalny; jeśli pominięto N2, Mid zwraca wszystko znaków w ciąguSz pozycjiN1 do końca linii Zwraca wartość typu String; kopiuje N znaków z S,

zaczynając od znaku znajdującego się najbardziej na prawoS

Zwraca kopię ciągu S po usunięciu białych znaków

od prawej strony ciągu (znaki kończące)

Zwraca ciąg spacji o długościNpostacie

Porównuje S1 z S2 i zwraca liczbę wskazującą wynik porównania: -1 jeśli SI< S2; 0, если SI = S2; 1, если SI >S2. N jest opcjonalne i określa, czy w porównaniu ma być uwzględniana wielkość liter. Jeśli pominięto N, ciągi są porównywane przy użyciu bieżącego ustawienia OpcjaPorównywać

Zwraca ciąg znaków przekonwertowany do nowej postaci w oparciu o kod numeryczny określony przez N. VBA udostępnia stałe wewnętrzne do użycia z funkcją StrConv; najbardziej przydatne to: vbProperCase(konwertuje ciąg znaków w taki sposób, że każda litera rozpoczynająca słowo jest wielka), vbMała litera(konwertuje ciąg na małe litery) i vbWielkie litery(konwertuje ciąg na wielkie litery)

Funkcja (ar- Zwroty/Akcjaguma)

String(N, S) Zwraca ciąg o długości N znaków, składający się ze znaku

określony przez pierwszy znak wS Trim(S) Zwraca kopię łańcucha S po usunięciu wiodących i

końcowe białe znaki z tego ciągu UCase(S) Zwraca S zawierające wyłącznie małe litery,

konwertowane na wielkie litery Kilka wymienionych w tabeli. 16 funkcji konwersji typów danych ma zastosowanie również do manipulacji ciągami znaków: w szczególności Chr, Format, CStr.

Formatowanie wartości danych

Chociaż VBA może automatycznie konwertować dowolny typ danych na ciąg znaków w celu wyświetlenia za pomocą funkcji MsgBox lub wstawienia do arkusza programu Excel, format danych wybrany przez VBA może nie być tym, który chcesz. Konwertując liczbę na ciąg znaków, język VBA nie dodaje do ciągu znaków separatora tysięcy, znaków dolara ani innego formatowania liczb. Dodatkowo, jeśli liczba jest bardzo duża lub bardzo mała, VBA tworzy ciąg znaków reprezentujący tę liczbę w notacji naukowej. Podczas konwertowania dat język VBA zawsze używa krótkiego formatu daty i godziny używanego przez system operacyjny komputera i zawsze wyświetla zarówno datę, jak i godzinę.

Aby uzyskać prawie dowolny format daty podczas konwersji liczb lub dat na ciągi znaków, możesz skorzystać z funkcji Format; możesz nawet użyć tej funkcji Format do formatowania danych ciągu według określonego wzorca. Możesz także utworzyć niestandardowe formaty ekranu, jeśli chcesz, aby dane pojawiały się w określonym formacie. Składnia operatora formatu:

Format( Wyrażenie [, Format[, Pierwszy dzień tygodnia [, Pierwszy tydzień roku]]])

Wyrażenie – dowolne prawidłowe wyrażenie (obowiązkowe); Format – prawidłowe wyrażenie w formacie nazwanym lub zdefiniowanym przez użytkownika (opcjonalnie); Pierwszy dzień tygodnia – stała określająca pierwszy dzień tygodnia (opcjonalnie); Pierwszy tydzień roku – stała określająca pierwszy tydzień roku (opcjonalnie).

Dla argumentów Pierwszy dzień tygodnia I Pierwszy tydzień roku VBA ma nazwy stałych, o których możesz dowiedzieć się w Pomocy VBA w sekcji Stałe daty.

Aby skorzystać z funkcji Format, możesz określić predefiniowany format (tzw nazwany format(o imieniu format) lub utwórz obraz o określonym formacie, korzystając z kombinacji specjalnej grupy znaków tzw znaki zastępcze(symbole zastępcze). Jeśli chcesz utworzyć niestandardowe formaty liczb, dat lub godzin, musisz utworzyć ciąg zawierający znaki zastępcze, aby określić formatowanie, którego powinna używać funkcja Format podczas konwersji wartości na ciąg znaków (Tabela 19). Dodatkowo w tabeli. 19 używanych

na przykład wartość liczbowa to 1234,5.

stworzyć niestandardowy

Tabela 19– Formatuj znaki wypełniające

Znak zastępczy

Działanie

Znak numeryczny wyświetlający cyfrę, jeśli znajduje się ona na tej pozycji, lub 0, jeśli nie. Możesz użyć znaku 0, aby wyświetlić zera początkowe w przypadku liczb całkowitych i zera końcowe w przypadku miejsc dziesiętnych; 00000.000 wyświetla 00124.500

Symbol numeryczny wyświetla cyfrę, jeśli znajduje się ona na tej pozycji, w przeciwnym razie nie wyświetla niczego. Znak zastępczy # jest równoważny 0, z tą różnicą, że zera początkowe i końcowe nie są wyświetlane; #####.### wyświetla 1234,5

$ Wyświetla znak dolara; $###,###.00 wyświetla kwotę 1234,50 USD

Dziesiętny znak zastępczy, wyświetla przecinek dziesiętny w wyznaczonej pozycji w ciągu znaków zastępczych 0; #.##.## wyświetla 1234.5

Symbol procentu mnoży wartość przez 100 i dodaje znak procentu w miejscu wskazanym przez 0 znaków wypełniających; #0.00% wyświetla liczbę 0,12345 jako 12,35% (12,345 zaokrągla do 12,35)

, (przecinek)

Separator tysięcy, dodaje przecinki jako separatory tysięcy w ciągach znaków wypełniających 0 i #; ###,###,###. 00 wyświetla 1234,50

Wyświetla wartości w formacie wykładniczym ze znakiem wykładnika tylko dla wartości ujemnych; #.#### mi00 wyświetla 1.2345E03; Wartość 0,12345 jest wyświetlana jako 1,2345E-01

Wyświetla wartości w formacie wykładniczym z wykładnikiem wartości dodatnich i ujemnych; #.#### E+00 wyświetla 1.2345E+03

Oddziela dzień, miesiąc i rok w celu formatowania wartości dat. mm/ dd/ yy wyświetla datę 06.06.97. Znaki „/” można zastąpić znakami łącznika, aby wyświetlić je jako 06-06-97

Określa sposób wyświetlania miesięcy w datach; M wyświetla 2, mm– 02, mmm– luty, mmmm- Luty

Określa sposób wyświetlania dni w datach; D wyświetla 1, dd wyświetla 01, ddd– piątek, dddd- Piątek

y Wyświetla dzień roku jako liczbę od 1 do 366

Określa sposób wyświetlania lat w datach; yy wyświetla 99, Wow– 1999

Wyświetla kwartał roku jako liczbę od 1 do 4

Wyświetla dzień tygodnia jako liczbę (1 to niedziela)

Wyświetla tydzień roku jako liczbę od 1 do 54

Znak zastępczy

Działanie

: (dwukropek) Oddziela godziny, minuty i sekundy w wartościach formatu czasu; gg: mm: SS wyświetla 02:02:02

Określa sposób wyświetlania zegara; dla wartości czasu 02:01:38 H wyświetla 2, gg wyświetla 02

Symbol zastępczy minuty oznaczający czas; dla wartości czasu 02:01:08 N wyświetla 1 i nn wyświetla 01

Symbol zastępczy sekundy, oznaczający czas; dla wartości czasu 02:01:08 S wyświetla 8 i SS wyświetla 08

Wyświetla czas w formacie 12-godzinnym z dodanymi godzinami AM i PM; H: nnAM/RM wyświetla godzinę 16:00. Alternatywne formaty obejmują am/pm, A/P i a/p

Symbol zastępczy znaku, wyświetla spację, jeśli w sformatowanym ciągu nie ma pasującego znaku (domyślna kolejność uzupełniania jest od prawej do lewej)

Wyświetla wszystkie znaki wielkimi literami

Wyświetla wszystkie znaki małymi literami

Korzystanie z funkcji aplikacji hosta

Oprócz funkcji wbudowanych w Visual Basic for Applications, niektóre funkcje aplikacji hosta VBA są dostępne z poziomu kodu VBA. Gospodarz-aplikacja to aplikacja, w której rozwijane są procedury VBA takie jak Word, Excel, PowerPoint, Outlook czy FrontPage. Na przykład Excel ma różne funkcje, które wykonują operacje matematyczne, logiczne, finansowe i statystyczne na danych w arkuszach. Wiele (choć nie wszystkie) z tych funkcji programu Excel jest dostępnych z poziomu kodu VBA. Funkcje aplikacji hosta dostępne dla VBA nie są częścią VBA, są częścią aplikacji hosta. Funkcje dostępne dla VBA w jednej aplikacji hosta mogą nie być dostępne w innej.

Aby użyć funkcji należącej do aplikacji hosta, należy uzyskać do niej dostęp poprzez obiekt programu Aplikacja. Obiekt Application VBA reprezentuje aplikację hosta i wszystkie jej zasoby. Obiekty opisano szerzej w części 6.

Zadanie 6. Napisz procedurę korzystającą z funkcji Max programu Excel.

Dla tego:

Wejdź w procedurę (Listing 8):

Lista 8 – Korzystanie z funkcji ExcelaMaks

1 lista podrzędna3_08()

2 Aplikacja MsgBox.Max(9, 17, -18, 20)

Za Słowem Aplikacja po którym następuje kropka (.), a następnie nazwa funkcji Maks bez przestrzeni. Ten punkt, tzw kropka oddzielająca(kropka separator) wskazuje, że instrukcja odnosi się do funkcji Maks, który jest częścią obiektu

Aplikacja.

Wyniku funkcji Excel nie można zignorować. W wywołaniu funkcji programu Excel należy zawsze umieszczać nawiasy i zawsze należy w jakiś sposób używać wyniku funkcji: jako wartości w wyrażeniu, argumentu innej funkcji lub procedury albo w instrukcji przypisania.

Nie każda funkcja aplikacji hosta jest dostępna dla języka VBA. Jeśli nie masz pewności, czy dana funkcja aplikacji hosta jest dostępna dla VBA, użyj Obiekt Przeglądarka aby sprawdzić, czy lista zawiera Członkowie (Część) ta funkcja, jeśli jest wybrana Funkcja arkusza na liście Zajęcia (Zajęcia) i z wybraną aplikacją hosta na liście Projekt/ Biblioteka (Projekt/Biblioteka). Jeśli żądanej funkcji nie ma na liście, oznacza to, że nie jest ona dostępna dla VBA.

Pytania kontrolne

    Zdefiniuj pojęcie „typów danych”. Jakie typy danych są używane w VBA?

    Co to jest identyfikator?

    Co to jest zmienna? Co oznacza wyrażenie „zdefiniuj zmienną implicytnie” i co oznacza „jawnie”?

    Jakie stałe są używane w VBA? Co to są stałe wewnętrzne?

    Do czego służą funkcje InputBox i MsgBox?

    Co to jest wyrażenie?

    Zdefiniuj składnię operatora przypisania.

    Co to są operacje relacyjne?

    Jaki jest priorytet operacji matematycznych?

    Jakie słowo kluczowe istnieje w VBA, którego należy użyć podczas uzyskiwania dostępu do funkcji Excela? Do czego można wykorzystać okno Przeglądarki obiektów?

Procedury i funkcje to oddzielne bloki tworzące kod programu; każda procedura wykonuje zadanie lub jego część.

Procedury zdarzeń stale czekają na zdarzenia po wywołaniu.

Oprócz procedur przetwarzania zdarzeń program może zawierać procedury i funkcje niezwiązane ze zdarzeniami. Wykonują oddzielne czynności i można ich używać wielokrotnie. Nazwijmy ich generałami. Procedury ogólnego przeznaczenia są wywoływane do wykonania w kodzie programu. Stosowanie procedur oszczędza czas i pozwala uniknąć niepotrzebnych błędów. Funkcje różnią się od procedur tym, że zwracają wartość.

Procedura lub funkcja to sekwencja operacji, które należy wykonać wielokrotnie w różnych miejscach aplikacji. W takim przypadku wymagany blok poleceń jest zapisywany w kodzie tylko raz, po czym można uzyskać do niego dostęp z dowolnej części programu.

Funkcjonować to podprogram wywoływany w celu wykonania pewnego rodzaju obliczeń lub sprawdzenia. Po zakończeniu pracy zwraca kontrolę programowi wywołującemu i przekazuje mu wynik obliczeń.

Procedura- to także podprogram. Jest również wywoływany w celu wykonania jakiejś akcji, ale nie jest wymagane zwracanie jakichkolwiek wartości do programu głównego.

Składnia procedury i deklaracji funkcji:

Pod<Имя процедуры>(<Параметры>) <Операторы>Zakończ podfunkcję<Имя функции> <Операторы>Funkcja końcowa

Procedury zadeklarowane słowem kluczowym Public można wywołać w dowolnym module aplikacji (każdy formularz jest osobnym modułem).

Procedury zadeklarowane jako prywatne można wywoływać tylko w bieżącym module.

Słowo Static oznacza, że ​​wszystkie zmienne zadeklarowane w procedurze będą statyczne, tj. ich wartości są zachowywane pomiędzy połączeniami.

Parametry zapewniają połączenie pomiędzy procedurą i aplikacją. Są to dane przekazywane do procedury po jej wywołaniu.

Procedury obsługi zdarzeń. Wywoływana w przypadku wystąpienia zdarzenia. W tym przypadku istotna jest zarówno nazwa elementu, jak i rodzaj zdarzenia, które mu się przydarzyło.

Procedury niestandardowe. Grupy operatorów utworzone przez programistę w celu wykonywania określonych zadań i niezależnie od aktualnego stanu aplikacji lub zdarzeń, które miały miejsce w tym czy innym momencie.

Wbudowane funkcje. Określone zestawy poleceń dostępne w języku Visual Basic i przeznaczone do obliczania określonych wartości na podstawie danych źródłowych. W szczególności wbudowane są zarówno funkcje matematyczne, jak i łańcuchowe (Abs, Cos, Sin, Mid, Len itp.)

Funkcje niestandardowe. Grupy instrukcji podobne do procedur użytkownika.

Istnieje jednak wiele różnic między nimi.

Główne różnice między funkcją a procedurą są następujące.

1. Funkcja ma typ (podobny do zmiennej) i może zwracać do programu wartość, która jest przypisana do funkcji za pomocą operatora:

<Имя функции>= wartość

2. Funkcję wywołuje się z reguły przez podanie jej nazwy i parametrów po prawej stronie dowolnego operatora. Natomiast procedurę wywołuje się za pomocą osobnej instrukcji:

Dzwonić<Имя процедуры>(Opcje)

<Имя процедуры>(Opcje)

Jeżeli przy wywołaniu procedury użyte zostanie słowo kluczowe Call, wówczas listę parametrów należy podać w nawiasach. Jeżeli procedura zostanie wywołana bez użycia Call, wówczas jej parametry zostaną wypisane bez nawiasów.

Należy zaznaczyć, że wywoływana procedura może nie posiadać parametrów. W takim przypadku (jeżeli użyto słowa serwisowego Call) po nazwie procedury należy umieścić puste nawiasy.

Procedury użytkownika są zwykle stosowane, gdy konieczne jest wykonanie tej samej sekwencji operacji. Na przykład program wymaga wielokrotnego wprowadzania w pętli wartości tablicy arrA składającej się z pięciu elementów. W takim przypadku wypełnianie tablicy najlepiej wykonać w ramach procedury.

Polecenie Dodaj procedurę z menu Narzędzia umożliwia dodanie procedury lub funkcji.

Niech procedura Cir narysuje elipsę o współrzędnych x, y, które zostaną przekazane procedurze jako parametry. Tworząc procedurę Cir za pomocą polecenia Dodaj procedurę, należy podać nazwę procedury i wybrać zakres Publiczny lub Prywatny.

Po zakończeniu dialogu otrzymujemy deklarację postępowania:

Prywatny Sub Cir() : End Sub

Teraz musisz wprowadzić parametry w nawiasach i napisać tekst procedury. Zaleca się wskazanie rodzaju zmiennych na liście parametrów.

Prywatny sub-cyr(x jako liczba całkowita, y jako liczba całkowita) Okrąg (x,y),500,2 End Sub

Zmienne deklaruje się na początku programu w następujący sposób:
Przyciemnij nazwę zmiennej jako typ zmiennej
Lub dla kilku zmiennych tego samego typu
Nazwa zmiennej ściemniania 1, nazwa zmiennej 2, ... nazwa zmiennej N jako Typ zmiennej
Nazwę zmiennej podaje się literami angielskimi, np.: InX, InY
Nazwa może oprócz liter zawierać cyfry, ale pierwsza litera musi być literą, na przykład: z500, x_1, y2.
Typ zmiennej zależy od wykonywanego zadania. Poniżej przedstawiono główne typy liczbowe w Visual Basic:

Typy całkowite
Liczba całkowita- numery od -32768 do +32767
Długi- numery od - 9223372036854775808 do +9223372036854775807

Typy zmiennoprzecinkowe
platforma- liczby od + 1,5*10 -45 do + 3,4*10 33
podwójnie- liczby od + 5*10 -324 do + 1,7*10 306

Oczywiście liczby całkowite nie nadają się do kalkulatora, dlatego do obliczeń użyjemy typu zmiennoprzecinkowego.
Najpierw utwórzmy procedurę obsługi zdarzenia (zwaną dalej po prostu zdarzeniem) dla przycisku. Zdarzenie kliknięcia tego przycisku można utworzyć po prostu poprzez dwukrotne kliknięcie przycisku. W rezultacie otworzy się edytor kodu z następującym tekstem:

Formularz zajęć publicznych 1
Prywatny przycisk podrzędny2_Click(ByVal nadawca jako System.Object, ByVal e Jako System.EventArgs) Uchwyty Button2.Click

Napis końcowy
Koniec klasy

Dodajmy linie kodu, aby zadeklarować zmienne i ustawienia początkowe.

Formularz zajęć publicznych 1
Wymiar x1, x2, z Jako podwójny Deklaracja zmiennej REM
Prywatny przycisk podrzędny2_Click(ByVal nadawca jako System.Object, ByVal e Jako System.EventArgs) Uchwyty Button2.Click
„Czyszczenie pól tekstowych
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
„ Resetowanie zmiennych do zera
x1 = 0
x2 = 0
z = 0
Napis końcowy
Koniec klasy

Komentarze do programu można pisać przy użyciu standardowego słowa REM (Uwaga) lub umieszczając pojedynczy cudzysłów (apostrof) na początku wiersza komentarza. Jeśli komentarz obejmuje wiele wierszy, na początku każdego wiersza wpisz REM lub apostrof. Komentarze nie mają żadnego wpływu na działanie programu.

Spróbujmy uruchomić program do wykonania (F5) i po wpisaniu kilku znaków w polach wejściowych wciśnij przycisk. Wszystkie pola powinny zostać wyczyszczone.

Utwórzmy teraz zdarzenie dla przycisku „Oblicz”. Po dwukrotnym kliknięciu przycisku otrzymujemy kod zdarzenia:

Prywatny przycisk podrzędny 1_Click (nadawca według wartości jako System.Object, ByVal e jako System.EventArgs) Uchwyty Button1.Click

Dodajmy linie kodu niezbędne do obliczeń:

Prywatny przycisk podrzędny 1_Click (nadawca według wartości jako System.Object, ByVal e jako System.EventArgs) Uchwyty Button1.Click
x1 = Convert.ToDouble(TextBox1.Text)
x2 = Convert.ToDouble(TextBox3.Text)
Jeśli TextBox2.Text = „+” To z = x1 + x2
Jeśli TextBox2.Text = „-” Następnie z = x1 - x2
Jeśli TextBox2.Text = „*” To z = x1 * x2
Jeśli TextBox2.Text = „/” To z = x1 / x2
TextBox4.Text = Convert.ToString(z)
Napis końcowy

Spójrzmy, co oznaczają dodane linie.
x1 = Convert.ToDouble(TextBox1.Text) - oznacza przypisanie zmiennej x1 wartości z pola tekstowego TextBox1. Ponieważ TextBox1 zawiera dane typu tekstowego, należy je przekonwertować na typ numeryczny. W tym celu używamy funkcji Convert.ToDouble. Druga linia jest podobna do pierwszej, ale dla wartości x2.
Następnie następują linie z tak zwanymi operatorami warunkowymi. Na przykład linia oznacza: Jeżeli (jeśli) tekst z pola tekstowego TextBox2 jest równy symbolowi + to (Then) przypisz sumę wartości x1 i x2 do zmiennej z.
Zatem sprawdzając sekwencyjnie, który znak wprowadzamy jako znak operacji, wykonujemy odpowiednie obliczenia. Na koniec wyświetlamy wynik w linii TextBox4. Ponieważ TextBox4 akceptuje tylko dane typu tekstowego, powinniśmy przekonwertować wartość zmiennej z na typ łańcuchowy. W tym celu użyjemy funkcji konwersji Convert.ToString(z).
Spróbujmy dokonać obliczeń w naszym kalkulatorze. Uruchommy program (F5). Przy wprowadzaniu liczb zmiennoprzecinkowych należy użyć znaku jako separatora.

Dodajmy dla urozmaicenia do naszego kalkulatora operację podniesienia wartości 1 do potęgi wartości 2. Potęgę zwykle oznaczamy symbolem ^. Aby rozszerzyć możliwości kalkulatora, dodaj linię do kodu obsługi zdarzeń:

Jeśli TextBox2.Text = „+” To z = x1 + x2
Jeśli TextBox2.Text = „-” Następnie z = x1 - x2
Jeśli TextBox2.Text = „*” To z = x1 * x2
Jeśli TextBox2.Text = „/” To z = x1 / x2
Jeśli TextBox2.Text = „^” To z = Math.Pow(x1, x2)

Aby obliczyć stopień, używamy funkcji Pow(x1, x2) wbudowanej w obiekt Math.