Podczas pisania kodu VBA w Excelu na każdym kroku używany jest zestaw wbudowanych operatorów. Operatory te dzielą się na operatory matematyczne, łańcuchowe, porównania i logiczne. Następnie przyjrzymy się szczegółowo każdej grupie operatorów.

Operatory matematyczne

W poniższej tabeli wymieniono główne operatory matematyczne VBA.

Prawa kolumna tabeli pokazuje domyślny priorytet operatora w przypadku braku nawiasów. Dodając nawiasy do wyrażenia, możesz zmienić kolejność wykonywania instrukcji VBA według własnego uznania.

Operatory ciągów

Podstawowym operatorem ciągu w Excel VBA jest operator konkatenacji & (łączyć):

Operatory porównania

Operatory porównania służą do porównywania dwóch liczb lub ciągów i zwracania logiczne rodzaj Boole'a(Prawda czy fałsz). W tej tabeli wymieniono główne operatory porównania Excel VBA:

Operatory logiczne

Operatory logiczne, takie jak operatory porównania, zwracają wartość logiczną typu Boole'a(Prawda czy fałsz). Główny operatory logiczne Excel VBA są wymienione w poniższej tabeli:

Powyższa tabela nie zawiera wszystkich operatorów logicznych dostępnych w VBA. Pełna lista Operatory logiczne można znaleźć w witrynie Visual Basic Developer Center.

Wbudowane funkcje

W VBA dostępnych jest wiele wbudowanych funkcji, które można wykorzystać podczas pisania kodu. Poniżej wymieniono niektóre z najczęściej używanych:

Funkcjonować Akcja
abs Zwraca wartość bezwzględną podanej liczby.
  • Abs(-20) zwraca wartość 20;
  • abs(20) zwraca wartość 20.
Chr Zwraca znak ANSI odpowiadający wartości liczbowej parametru.
  • Chr(10) zwraca łamanie wiersza;
  • Chr(97) zwraca znak a.
Data Zwraca bieżącą datę systemową.
DataDodaj Dodaje określony przedział czasu do podanej daty. Składnia funkcji:

DataDodaj( interwał , numer , data )

Gdzie jest argument? interwał określa rodzaj interwału czasowego dodawanego do podanego data w wysokości określonej w argumencie numer .

Argument interwał może przyjąć jedną z następujących wartości:

  • DataDodaj("d", 32, "01.01.2015") dodaje 32 dni do daty 01.01.2015 i tym samym zwraca datę 02.02.2015.
  • DateAdd("ww", 36, "01.01.2015") dodaje 36 tygodni do daty 01.01.2015 i zwraca datę 09.09.2015.
DataDiff Oblicza liczbę określonych odstępów czasu między dwiema podanymi datami.
  • DateDiff("d", "01.01.2015", "02.02.2015") oblicza liczbę dni od 01.01.2015 do 02.02.2015, zwraca 32.
  • DateDiff(„ww”, „01.01.2015”, „03.03.2016”) oblicza liczbę tygodni od 01.01.2015 do 03.03.2016, zwraca 61.
dzień Zwraca liczbę całkowitą odpowiadającą dniowi miesiąca w podanym dniu.

Przykład: dzień („29.01.2015”) zwraca liczbę 29.

Godzina Zwraca liczbę całkowitą odpowiadającą liczbie godzin w podanym czasie.

Przykład: Godzina („22:45:00”) zwraca liczbę 22.

InStr Jako argumenty przyjmuje liczbę całkowitą i dwa łańcuchy. Zwraca pozycję wystąpienia drugiego ciągu w ciągu pierwszego, rozpoczynając wyszukiwanie od pozycji określonej przez liczbę całkowitą.
  • InStr(1, „Oto wyszukiwane słowo”, „słowo”) zwraca liczbę 13.
  • InStr(14, „Oto wyszukiwane słowo, a tutaj inne wyszukiwane słowo”, „słowo”) zwraca liczbę 38.

Notatka: Nie można podać argumentu liczby, w którym to przypadku wyszukiwanie rozpoczyna się od pierwszego znaku ciągu określonego w drugim argumencie funkcji.

int Zwraca część całkowitą podanej liczby.

Przykład: Śr.(5.79) zwraca wynik 5.

Isdate zwroty Prawdziwe jeśli podana wartość jest datą, lub Fałszywy– jeśli data nie jest.
  • JestData(„01.01.2015”) zwroty Prawdziwe;
  • Czy data(100) zwroty Fałszywy.
Czy błąd? zwroty Prawdziwe jeśli podana wartość jest błędem, lub Fałszywy– jeśli to nie jest błąd.
Brakuje Nazwa opcjonalnego argumentu procedury jest przekazywana jako argument do funkcji. Brakuje zwroty Prawdziwe jeśli nie przekazano żadnej wartości dla danego argumentu procedury.
Czy numeryczne zwroty Prawdziwe jeśli dana wartość może być traktowana jako liczba, w przeciwnym razie zwraca Fałszywy.
Lewy Zwraca określoną liczbę znaków od początku danego ciągu. Składnia funkcji wygląda tak:

Lewy( linia , długość )

gdzie linia- to jest oryginalny ciąg, a długość to liczba znaków do zwrócenia, licząc od początku ciągu.

  • Left("abvgDeZicleMn", 4) zwraca ciąg "abcg";
  • Left("abvgDeZicleMn", 1) zwraca ciąg "a".
Len Zwraca liczbę znaków w ciągu.

Przykład: Len("abcdej") zwraca liczbę 7.

miesiąc Zwraca liczbę całkowitą odpowiadającą miesiącowi podanej daty.

Przykład: Miesiąc(„29.01.2015”) zwraca wartość 1.

Środek Zwraca określoną liczbę znaków ze środka danego ciągu. Składnia funkcji:

Środek( linia , Początek , długość )

gdzie linia to oryginalny ciąg Początek- pozycja początku wyciąganego ciągu, długość to liczba znaków do wyodrębnienia.

  • Środek("abvgDeZicleMn", 4, 5) zwraca ciąg "gdzie";
  • Mid("abvgDeZicleMn", 10, 2) zwraca ciąg "cl".
Minuta Zwraca liczbę całkowitą odpowiadającą liczbie minut w podanym czasie Przykład: Minuta("22:45:15") zwraca wartość 45.
Ale już Zwraca bieżącą datę i godzinę systemową.
Prawidłowy Zwraca określoną liczbę znaków od końca danego ciągu. Składnia funkcji:

Prawidłowy( linia , długość )

Gdzie linia jest oryginalnym ciągiem i długość to liczba znaków do wyodrębnienia, licząc od końca danego ciągu.

  • Prawo("abvgDeZicleMn", 4) zwraca ciąg "clmn";
  • Prawo("abvgDeZicleMn", 1) zwraca ciąg "n".
Drugi Zwraca liczbę całkowitą odpowiadającą liczbie sekund w podanym czasie.

Przykład: Drugi („22:45:15”) zwraca wartość 15.

sqr Zwraca pierwiastek kwadratowy z wartości liczbowej przekazanej w argumencie.
  • Sqr(4) zwraca 2;
  • Kwadrat(16) zwraca wartość 4.
Czas Zwraca aktualny czas systemowy.
Ubound Zwraca indeks górny określonego wymiaru tablicy.

Notatka: Do tablice wielowymiarowe jako opcjonalny argument możesz określić, który indeks wymiaru ma zostać zwrócony. Jeśli nie określono, wartością domyślną jest 1.

Operator przypisania (=)

Operator przypisania służy do przypisywania wyniku wyrażenia do zmiennej.

Operator przypisania ma dwie formy składniowe:

nazwa_zmiennej = wyrażenie

nazwa_zmiennej- dowolna zmienna VBA

wyrażenie- dowolne wyrażenie VBA

Podczas wykonywania instrukcji przypisania VBA najpierw ocenia wyrażenie po prawej stronie instrukcji przypisania, a następnie przechowuje wynik wyrażenia w zmiennej, której nazwa znajduje się po lewej stronie znaku równości.

X = 5 + 7; Y = X + 5 ; Z = X - Y; A=B; ja = ja + 1

Początkujący użytkownicy czasami nie rozumieją znaczenia ostatniej operacji przypisania, gdy zarówno lewa, jak i prawa część operacji zawierają tę samą zmienną. W tym przypadku najpierw wynik oceny wyrażenia po prawej stronie operatora przypisania jest umieszczany w pośredniej komórce pamięci, a następnie ten wynik jest przypisywany zmiennej po lewej stronie.

Na przykład, jeśli w instrukcji przypisania A = A +5 zmienna A przed operacją przypisania zawierała wartość 7, to po operacji będzie zawierała wartość 12 (7+5).

Należy pamiętać:

· Możesz przypisać dowolną zmienną liczbową (lub wyrażenie) do dowolnej innej zmiennej typu liczbowego (lub zmiennej typu Variant);

· Jeśli przypiszesz wyrażenie numeryczne do zmiennej wpisanej z niższą precyzją (na przykład Double — Long), VBA zaokrągli wartość wyrażenia, aby dopasować precyzję zmiennej, która przyjmuje nową wartość;

Jeśli zmienna typu String przydzielony typ zmiennej Wariant zawierający liczbę, VBA automatycznie przekonwertuje tę liczbę na ciąg.

Operator dodawania (+)

Operator dodawania wykonuje proste dodawanie. Oba operandy muszą być wyrażeniami liczbowymi lub ciągami, które VBA może przekonwertować na liczbę. Operator dodawania może być również używany do wykonywania operacji arytmetycznych na danych typu Date.

Typ danych wyniku wyrażenia dodawania jest zwykle taki sam, jak najbardziej precyzyjny typ w tym wyrażeniu. Ale są wyjątki:

· Wynikiem dodania typu Single i Long będzie Double;

· Wynikiem dodania typu Data do dowolnego innego typu danych będzie zawsze Data;

· Jeśli wynik przekracza zakres typu Integer, VBA przekonwertuje go na Long;

· Jeśli wynik przekracza typy Long, Single, Date, VBA konwertuje go na Double;

· Jeśli dowolny operand w wyrażeniu dodawania ma wartość Null, to wynik wyrażenia dodawania również ma wartość Null.

Przypomnij sobie kolejność rosnącej precyzji dla liczbowych typów danych: Byte, Integer, Long, Single, Double, Currency.

Należy powiedzieć, że trzeba jasno zrozumieć, w jaki sposób VBA konwertuje typy danych w wyniku operacji arytmetycznych. Pomoże to w przyszłości uniknąć wielu „niepotrzebnych” błędów podczas pisania kodu.

Operator odejmowania (-)

Operator odejmowania robi dwie rzeczy: służy do odejmowania jednej liczby od drugiej; oznacza jednoargumentowy znak minus (jest to znak minus umieszczony przed liczbą, aby wskazać, że jest to liczba ujemna). Umieszczenie jednoargumentowego minusa przed zmienną lub wyrażeniem jest tym samym, co pomnożenie tej liczby przez -1.

Oba operandy w wyrażeniu odejmowania muszą być zmiennymi liczbowymi (wyrażeniami) lub wyrażeniami łańcuchowymi, które VBA może przekonwertować na liczbę. Do pracy z datami można użyć operatora odejmowania.

VBA używa tych samych reguł do określenia typu danych wyniku wyrażenia odejmowania, co w przypadku wyrażeń używających operatora dodawania. Ale jest dodatek:

· Jeśli oba operandy w wyrażeniu są typu Date, wynikiem wyrażenia będzie typ Double.

Operator mnożenia (*)

Operator mnożenia mnoży dwie liczby - wynikiem wyrażenia mnożenia jest iloczyn dwóch operandów. Oba operandy w wyrażeniu mnożenia muszą być wyrażeniami liczbowymi lub ciągami, które VBA może przekonwertować na liczbę.

VBA stosuje te same zasady określania typu danych wyniku wyrażenia mnożenia, co w przypadku wyrażeń używających operatora dodawania. W wyrażeniach mnożenia wszystkie zmienne Variant zawierające wartości Date są konwertowane na wartości liczbowe.

Operator dywizji (/)

Operator dzielenia zmiennoprzecinkowego wykonuje zwykłe dzielenie arytmetyczne swoich operandów.

W wyrażeniach dzielenia pierwszy operand jest dzielony przez drugi operand - wynikiem dzielenia jest iloraz.

Oba operandy w wyrażeniu z dzieleniem zmiennoprzecinkowym muszą być wyrażeniami liczbowymi lub ciągami, które VBA może przekonwertować na liczbę.

Jeśli co najmniej jeden operand w wyrażeniu dzielenia jest typu Null, wynik dzielenia również będzie miał wartość Null.

Typ danych operacji dzielenia zmiennoprzecinkowego to Double, z wyjątkiem:

Oba operandy w wyrażeniu dzielenia są typu Integer lub Single - wynik Single;

Jeżeli wynik wyrażenia nie przekracza zakresu wartości dla typu Single.

Dzielenie liczb całkowitych (\)

Dzielenie liczb całkowitych różni się od dzielenia zmiennoprzecinkowego tym, że jego wynikiem jest zawsze liczba całkowita bez części ułamkowej.

Oba operandy w wyrażeniu z dzieleniem liczb całkowitych muszą być wyrażeniami liczbowymi lub ciągami, które VBA może przekonwertować na liczbę.

Przed wykonaniem operacji dzielenia liczb całkowitych VBA zaokrągla każdy operand do liczby typu Integer lub Long (tego samego typu co wynik dzielenia liczb całkowitych).

VBA odrzuca (ale nie zaokrągla!) resztę ułamkową wyniku wyrażenia dzielenia liczb całkowitych. Na przykład wyrażenia 22\5 i 24\5 będą miały ten sam wynik = 4.

Jeśli co najmniej jeden operand w wyrażeniu dzielenia liczb całkowitych jest typu Null, wynik dzielenia również ma wartość Null.

Dywizja Modulo (Mod)

Dzielenie modulo niejako uzupełnia dzielenie liczb całkowitych. W dzieleniu modulo wyrażenie zwraca tylko resztę operacji dzielenia jako liczbę całkowitą.

22 Mod 5 = 2

24 Mod 5 = 4

25 Mod 5 = 0

Pozostałe właściwości dzielenia modulo są identyczne jak dzielenia liczb całkowitych.

Potęgowanie (^)

Operator potęgowania podnosi liczbę do potęgi.

5 ^ 3 =125

Oba operatory w wyrażeniu potęgowania muszą być wyrażeniami liczbowymi lub ciągami, które VBA może przekonwertować na liczby.

Operand po lewej stronie operatora potęgowania może być liczbą ujemną tylko wtedy, gdy operand po prawej jest liczbą całkowitą.

Wynik wyrażenia jest typu Double.

Jeśli co najmniej jeden operand w wyrażeniu jest typu Null, wynik potęgowania również będzie miał wartość Null.

Podsumujmy powyższe:

OPERATORZY LOGICZNE VBA

Jako operand dla operatora logicznego można użyć dowolnego prawidłowego wyrażenia, które ma wynik logiczny, a także liczbę, którą można przekonwertować na wartość logiczną.

Wynikiem operacji logicznej jest wartość typu Boolean (lub Null, jeśli co najmniej jeden z operandów ma wartość Null).

Operator logiczny AND

SKŁADNIA:

Operand_1 ORAZ Operand_2

Operator AND wykonuje spójnik logiczny.

Wynikiem tej operacji jest True tylko wtedy, gdy oba operandy są True, w przeciwnym razie False.

tabela prawdy

Operator AND może być używany na wielu operandach:

(5<7) AND (4>3) AND (5=6) wynik będzie Fałsz

Niezależnie od liczby operandów, wynik logicznego I operacje będzie True tylko wtedy, gdy wszystkie argumenty wyrażenia mają wartość True. W każdym innym przypadku wynik będzie Fałsz. Zauważ, że operandy są ujęte w nawiasy. VBA najpierw ocenia wartość każdego operandu w nawiasach, a następnie całe wyrażenie.

Operator logiczny OR

SKŁADNIA:

Operand_1 LUB Operand_2

Operator OR wykonuje alternatywa logiczna.

Wynikiem tej operacji jest True, jeśli przynajmniej jeden z operandów jest True, w przeciwnym razie False.

tabela prawdy

Operator OR może być używany na wielu operandach:

(5<7) OR (4>3) LUB (5=6) wynik będzie Prawda

Niezależnie od liczby operandów, wynik operacji logicznej OR zawsze będzie miał wartość True, jeśli przynajmniej jeden z operandów wyrażenia ma wartość True. W przeciwnym razie wynik będzie Fałsz.

Operatory AND i OR można łączyć:

((5<7) AND (4>3)) LUB (5=6) wynik będzie Prawda

Operator logiczny NOT

SKŁADNIA:

NIE argument

NIE Operator wykonuje negacja logiczna.

Operator NOT używa tylko jednego operandu.

tabela prawdy

Operatory AND OR NOT można łączyć:

((5<7) AND (4>3)) LUB NIE (5=6) wynik będzie PRAWDA

Operator logiczny XOR

SKŁADNIA:

Operand_1 XOR Operand_2

Operator XOR wykonuje logiczny wyjątek.

Wynik tej operacji to True, jeśli operandy mają różne znaczenia, w przeciwnym razie - Fałsz.

tabela prawdy

((5<7) AND (4>3)) OR NOT (5=6) XOR (5=5) wynik to Fałsz

Operator logiczny EQV

SKŁADNIA:

Operand_1 EQV Operand_2

Operatorem EQV jest operator równoważność logiczna.

Wynikiem tej operacji jest True, jeśli operandy mają tę samą wartość, w przeciwnym razie False.

tabela prawdy

((5<7) AND (4>3)) LUB NIE (5=6) EQV (5=5) da wynik Prawda.

Operatory porównania

Zazwyczaj operacje porównania są używane w instrukcjach zapętlonych, aby podjąć decyzję o dalszym przebiegu operacji.

Wynikiem każdej operacji porównania jest wartość logiczna: True, False.

Jeśli oba operandy w wyrażeniu porównania są tego samego typu danych, VBA wykonuje proste porównanie tego typu.

Jeśli oba operandy w wyrażeniu porównania mają określone typy, a te typy nie są zgodne, VBA generuje błąd niezgodności typu.

Jeśli jeden lub oba operandy w wyrażeniu porównania są zmiennymi typu Variant, VBA próbuje przekonwertować typ Variant na jakiś zgodny typ.

Operatory VBA: arytmetyczne, logiczne, porównania, przypisania

Operator to najmniejsza jednostka kodu VBA, którą można uruchomić. Instrukcja może zadeklarować lub zdefiniować zmienną, ustawić opcję kompilatora VBA lub wykonać jakąś akcję w programie.

W VBA jest tylko 7 operatorów arytmetycznych, cztery standardowe: dodawanie (+), odejmowanie (-), mnożenie (*), dzielenie (/) i jeszcze trzy:

  • potęgowanie (^), na przykład 2^3 = 8 ;
  • dzielenie liczb całkowitych (\). Dzieli pierwszą liczbę przez drugą, odrzucając (nie zaokrąglając) część ułamkowa. Na przykład, 5\2 = 2 ;
  • podział modulo (Mod). Dzieli pierwszą liczbę przez drugą, zwracając tylko resztę z dzielenia. Na przykład, 5 Mod 2 = 1.

Operatorem przypisania w VBA jest znak równości. Można to napisać tak:

Niech nVar = 10

lub nawet prościej:

nvar = 10

W drugim przypadku nie myl znaku równości z operatorem równości.

Wyrażenie

nvar = 10

oznacza "ustaw zmienną nVar na 10", a jeśli linia wygląda tak:

Jeśli (nVar = 10)

oznacza to "jeśli wartość zmiennej nVar jest równa 10".

Jeśli musisz przypisać obiekt do zmiennej, robi się to w inny sposób.

W VBA jest tylko 8 operatorów porównania:

  • równość (=), na przykład Jeśli (nVar = 10);
  • większe niż i mniejsze niż (> i<), например, Jeśli (nVar > 10);
  • większe lub równe i mniejsze lub równe (>= i<=), например, Jeśli (nVar >= 10);
  • nie równe (<>), na przykład, Jeśli(nVar<>10) ;
  • porównanie obiektów (Is). Określa, czy zmienne obiektu odnoszą się do tego samego obiektu, czy do różnych, na przykład If(obj1 to obj2);
  • podobieństwo (jak). Porównuje obiekt ciągu ze wzorcem i określa, czy wzorzec pasuje.

Operatory porównania zawsze zwracają prawdę lub fałsz — prawda, jeśli twierdzenie jest prawdziwe, a fałsz, jeśli jest fałszywe.

Trochę o porównywaniu wartości ciągów:

  • podczas porównywania wartości łańcuchowych rozróżniana jest wielkość liter;
  • brane są również pod uwagę spacje w wartościach ciągów;
  • porównując ciągi tekstowe domyślnie więcej/mniej są porównywane po prostu kody binarne postacie - co mniej więcej. Jeśli chcesz użyć kolejności alfabetycznej, możesz użyć polecenia

Opcja Porównaj tekst

Trochę więcej o operatorze Like. Jego ogólna składnia wygląda tak:

Wyrażenie1 Jak Wyrażenie2

W takim przypadku Expression1 jest dowolnym wyrażeniem tekstowym VBA, a Expression2 jest szablonem przekazywanym do operatora Like. W tym wzorcu możesz użyć specjalnych symboli wieloznacznych (patrz Tabela 3.1)

Patka. 3.1 Wildcards dla operatora LIKE

Bardzo często przy testowaniu kilku warunków stosuje się operatory logiczne:

  • AND - logiczne AND, oba warunki muszą być prawdziwe;
  • OR - logiczne OR, przynajmniej jeden z warunków musi być spełniony;
  • NIE - negacja logiczna, zwraca TRUE, jeśli warunek jest fałszywy;
  • XOR jest logicznym wyjątkiem. W wyrażeniu E1 XOR, E2 zwraca TRUE, jeśli tylko E1 = TRUE lub tylko E2 = TRUE w przeciwnym razie FALSE;
  • EQV - równoważność dwóch wyrażeń, zwraca TRUE jeśli mają taką samą wartość;
  • IMP - implikacja, zwraca FALSE jeśli E1 = TRUE i E2 = FALSE, w przeciwnym razie TRUE.

Należy pamiętać o AND, OR, NOT, inne operatory logiczne są rzadko używane.

Prawie każdy program VBA używa operatorów konkatenacji. W VBA są dwa z nich - + lub &. Zaleca się, aby zawsze używać & ponieważ:

  • przy użyciu & wykonywana jest automatyczna konwersja wartości numerycznych na ciągi znaków - nie ma niebezpieczeństwa popełnienia błędu;
  • w przypadku korzystania z operatora + dodanie wartości ciągu do wartości typu Null daje wartość Null.

MsgBox "Wiadomość do użytkownika" & vUserName

Kolejność stosowania operatorów można kontrolować za pomocą nawiasów.

Przyjrzyjmy się bliżej, jak VBA wykonuje operacje arytmetyczne, takie jak dodawanie, odejmowanie, mnożenie, dzielenie i potęgowanie, a także operacje specjalne, takie jak dzielenie liczb całkowitych i modulo. Poniższa tabela przedstawia znaki operacji używane podczas pisania wyrażeń arytmetycznych VBA.

Wyrażenie to wartość lub grupa wartości, która wyraża pojedynczą wartość. Wynikiem wyrażenia jest pojedyncza wartość określonego typu danych. Znaki (oznaczenia) operacji służą do operowania określonymi wartościami w wyrażeniach. Aby przypisać wynik wyrażenia do zmiennej, używany jest operator przypisania (=), który przechowuje dowolną wartość reprezentowaną przez wyrażenie po prawej stronie operatora przypisania w lokalizacji pamięci, do której odwołuje się zmienna po lewej stronie tego operatora.

We wszystkich poniższych operacjach oba operandy muszą być wyrażeniami liczbowymi lub ciągami, które VBA może przekonwertować na liczbę.

Dodatek

Znak (+) służy do wykonywania operacji dodawania. Terminy muszą być wyrażeniami liczbowymi, ciągami, które VBA może przekonwertować na liczby, lub datami, których można również używać w arytmetyce.

Sub Slozhenie() "Przykład wyrażenia arytmetycznego ze znakiem "+" Dim A1, A2, A3 As Integer "deklarowanie zmiennych A1=1 "przypisywanie wartości 1 do zmiennej A1 A2=2 "przypisywanie wartości 2 do zmiennej A2 A3=A1+A2 "przypisanie wyniku dodaj zmienną A3 MsgBox A3 "Wyjście A3 w oknie dialogowym End Sub

Typ danych wyniku wyrażenia dodawania jest zwykle taki sam, jak najbardziej dokładny typ w tym wyrażeniu, z kilkoma wyjątkami. Wszystkie wyjątki od tej reguły są wyraźnie pokazane na przykładach.

Odejmowanie

Znak (-) służy do wykonywania operacji odejmowania, a także do wskazywania liczb ujemnych (umieszczony przed zmienną lub wyrażeniem i oznacza to samo, co mnożenie przez -1). Znak minus umieszczony przed liczbą, wskazujący, że liczba jest ujemna, nazywany jest jednoargumentowym znakiem minus.

Aby określić typ danych wyniku wyrażenia odejmowania, VBA stosuje te same reguły, co w przypadku wyrażeń używających znaku operatora dodawania, ale istnieją dwie dodatkowe reguły.

Zasada 1. Jeśli jeden z operandów w wyrażeniu odejmowania jest typu Date, wynik wyrażenia będzie również typu Date.

Zasada 2. Jeśli oba operandy w wyrażeniu odejmowania są typu Date, wynik wyrażenia będzie typu Double.

Sub Vychitanie() "Przykład wyrażenia arytmetycznego ze znakiem "-" Dim D1, D2 As Date "deklaracja zmiennej D1=Teraz" przypisanie wartości bieżąca data zmienna D1 D2=Now-5 "przypisz wartość daty do zmiennej D2 MsgBox TypeName(D2), vbOKOnly, "Now-5" MsgBox TypeName(D1-D2), vbOKOnly, "D1-D2" End Sub

Mnożenie

Znak (*) służy do wykonania operacji mnożenia, wynikiem tej operacji jest iloczyn operandów. Aby określić typ danych wyniku wyrażenia mnożenia, VBA używa tych samych reguł, co w przypadku wyrażeń korzystających z dodawania. W wyrażeniach mnożenia wszystkie zmienne Variant zawierające wartości Date są konwertowane na wartości liczbowe.

"Przykład wyrażeń arytmetycznych ze znakiem "*" 4*10 "pomnóż 4 przez 10 MyVar*2 "pomnóż MyVar przez 2 MyVar*OtherVar "pomnóż MyVar przez OtherVar

Podział

Znak (/) służy do wykonywania operacji dzielenia, ten znak nazywa się znakiem dzielenia liczb rzeczywistych. W wyrażeniach dzielenia jeden operand jest dzielony przez drugi, a wynik dzielenia jest ilorazem.

"Przykład wyrażeń arytmetycznych ze znakiem"/"10/4" podziel 10 przez 4 MyVar/2 "podziel MyVar przez 2 MyVar/OtherVar" podziel MyVar przez OtherVar

Jeśli dowolny operand w wyrażeniu dzielenia ma wartość Null, wynikiem wyrażenia jest również Null. Typ danych w wyrażeniach dzielenia rzeczywistego to zwykle Double, ale istnieje wyjątek.

Jeśli oba operandy w wyrażeniu dzielenia są typu Integer lub Single, wynik wyrażenia dzielenia jest typu Single. Jeśli wynik przekracza zakres dla Single, VBA konwertuje go na Double.

Dzielenie liczb całkowitych

Znak (\) służy do wykonywania operacji dzielenia liczb całkowitych, w której wynikiem dzielenia jest zawsze liczba całkowita bez części ułamkowej. VBA nie zaokrągla ilorazu dzielenia liczb całkowitych, ale po prostu skraca go do liczby całkowitej, odrzucając część ułamkową.

Typ danych wyniku wyrażenia dzielenia liczb całkowitych to Integer lub Long. VBA używa najmniejszego typu danych, który pasuje do wyniku wyrażenia.

"Przykład wyrażeń arytmetycznych ze znakiem "\" 10\4 "podziel 10 przez 4; zwraca wartość 2 MyVar\2 "dzieląc MyVar przez 2 MyVar\OtherVar "dzieląc MyVar przez OtherVar

Podział modulo

Znak (Mod) służy do wykonania operacji modulo. W dzieleniu modulo wyrażenie zwraca tylko resztę z dzielenia jako liczbę całkowitą.

„Przykład wyrażeń arytmetycznych ze znakiem „Mod” 8 Mod 2 „zwraca wartość 0; 5.1 Mod 3 "zwraca wartość 2; 6 Mod MyVar "jeśli MyVar zawiera 3, zwraca 0

Zrozumiałe wyjaśnienie tego działanie matematyczne dany na jednym z forów programistów. Cytuję stamtąd: „wyobraź sobie, że jest pełny kanister 50 l i puszka 3 l. I zaczynasz nabierać wodę z kanistra za pomocą puszki (możesz tylko nabrać pełną puszkę). Nabierane 48 l, zostały 2 litry …” Innymi słowy, 50 Mod 3 zwraca 2.

Typ danych wyniku wyrażenia modulo to Integer lub Long. VBA używa najmniejszego typu, który pasuje do wyniku wyrażenia.

Potęgowanie

Znak (^) służy do wykonywania operacji potęgowania na liczbie lub wyrażeniu. Wykładnik wskazuje, ile razy liczba lub wyrażenie powinno być pomnożone przez siebie.

"Przykładowe wyrażenie arytmetyczne ze znakiem "^" 3 ^ 3" to to samo co 3*3*3, zwraca wartość 27


Operator przypisania (=)

Operator przypisania służy do przypisywania wyniku wyrażenia do zmiennej.

Operator przypisania ma dwie formy składniowe:

1 Niech nazwa_zmiennej = wyrażenie
2 nazwa_zmiennej = wyrażenie


nazwa_zmiennej- dowolna zmienna VBA

wyrażenie- dowolne wyrażenie VBA


Pierwsza wersja operatora przypisania była używana we wczesnych językach programowania Basic. Druga opcja jest używana w nowoczesnej wersji VBA.


Podczas wykonywania instrukcji przypisania VBA najpierw ocenia wyrażenie po prawej stronie instrukcji przypisania, a następnie przechowuje wynik wyrażenia w zmiennej, której nazwa znajduje się po lewej stronie znaku równości.


X = 5 + 7; Y = X + 5 ; Z = X - Y; A=B; ja = ja + 1


Początkujący użytkownicy czasami nie rozumieją znaczenia ostatniej operacji przypisania, gdy zarówno lewa, jak i prawa część operacji zawierają tę samą zmienną. W tym przypadku najpierw wynik oceny wyrażenia po prawej stronie operatora przypisania jest umieszczany w pośredniej komórce pamięci, a następnie ten wynik jest przypisywany zmiennej po lewej stronie.

Na przykład, jeśli w instrukcji przypisania A = A +5 zmienna A przed operacją przypisania zawierała wartość 7, to po operacji będzie zawierała wartość 12 (7+5).

Należy pamiętać:

  • Dowolną zmienną liczbową (lub wyrażenie) można przypisać do dowolnej innej zmiennej typu liczbowego (lub zmiennej typu Wariant);
  • Jeśli przypiszesz wyrażenie liczbowe do zmiennej wpisanej z mniejszą dokładnością (na przykład Double — Long), VBA zaokrągli wartość wyrażenia, aby dopasować precyzję zmiennej, która przyjmuje nową wartość;
  • Gdy zmienna typu String jest przypisana do wariantu zawierającego liczbę, VBA automatycznie konwertuje liczbę na ciąg.

Operator dodawania (+)

Operator dodawania wykonuje proste dodawanie. Oba operandy muszą być wyrażeniami liczbowymi lub ciągami, które VBA może przekonwertować na liczbę. Operator dodawania może być również używany do wykonywania operacji arytmetycznych na danych typu Date.


Typ danych wyniku wyrażenia dodawania jest zwykle taki sam, jak najbardziej precyzyjny typ w tym wyrażeniu. Ale są wyjątki:

  • Wynikiem dodania typu Single i Long jest Double;
  • Dodanie typu Date do dowolnego innego typu danych zawsze spowoduje powstanie Date;
  • Jeśli wynik przekracza zakres typu Integer, VBA konwertuje go na Long;
  • Jeśli wynik przekracza typy Long, Single, Date, VBA konwertuje go na Double;
  • Jeśli dowolny operand w wyrażeniu dodawania ma wartość Null, wynik wyrażenia dodawania również ma wartość Null.

Przypomnij sobie kolejność rosnącej precyzji dla liczbowych typów danych: Byte, Integer, Long, Single, Double, Currency.

Należy powiedzieć, że trzeba jasno zrozumieć, w jaki sposób VBA konwertuje typy danych w wyniku operacji arytmetycznych. Pomoże to w przyszłości uniknąć wielu „niepotrzebnych” błędów podczas pisania kodu.

Operator odejmowania (-)

Operator odejmowania robi dwie rzeczy: służy do odejmowania jednej liczby od drugiej; oznacza jednoargumentowy znak minus (jest to znak minus umieszczony przed liczbą, aby wskazać, że jest to liczba ujemna). Umieszczenie jednoargumentowego minusa przed zmienną lub wyrażeniem jest tym samym, co pomnożenie tej liczby przez -1.


Oba operandy w wyrażeniu odejmowania muszą być zmiennymi liczbowymi (wyrażeniami) lub wyrażeniami łańcuchowymi, które VBA może przekonwertować na liczbę. Do pracy z datami można użyć operatora odejmowania.

VBA używa tych samych reguł do określenia typu danych wyniku wyrażenia odejmowania, co w przypadku wyrażeń używających operatora dodawania. Ale jest dodatek:
Jeśli oba operandy w wyrażeniu są typu Date, wynik wyrażenia będzie typu Double.

Operator mnożenia (*)

Operator mnożenia mnoży dwie liczby - wynikiem wyrażenia mnożenia jest iloczyn dwóch operandów. Oba operandy w wyrażeniu mnożenia muszą być wyrażeniami liczbowymi lub ciągami, które VBA może przekonwertować na liczbę.

VBA stosuje te same zasady określania typu danych wyniku wyrażenia mnożenia, co w przypadku wyrażeń używających operatora dodawania. W wyrażeniach mnożenia wszystkie zmienne Variant zawierające wartości Date są konwertowane na wartości liczbowe.

Operator dywizji (/)

Operator dzielenia zmiennoprzecinkowego wykonuje zwykłe dzielenie arytmetyczne swoich operandów.

W wyrażeniach dzielenia pierwszy operand jest dzielony przez drugi operand - wynikiem dzielenia jest iloraz.

Oba operandy w wyrażeniu z dzieleniem zmiennoprzecinkowym muszą być wyrażeniami liczbowymi lub ciągami, które VBA może przekonwertować na liczbę.

Jeśli co najmniej jeden operand w wyrażeniu dzielenia jest typu Null, wynik dzielenia również będzie miał wartość Null.

Typ danych operacji dzielenia zmiennoprzecinkowego to Double, z wyjątkiem:

  • Oba operandy w wyrażeniu dzielenia są typu Integer lub Single - wynik Single;
  • Jeżeli wynik wyrażenia nie przekracza zakresu wartości dla typu Single.

Dzielenie liczb całkowitych (\)

Dzielenie liczb całkowitych różni się od dzielenia zmiennoprzecinkowego tym, że jego wynikiem jest zawsze liczba całkowita bez części ułamkowej.

Oba operandy w wyrażeniu z dzieleniem liczb całkowitych muszą być wyrażeniami liczbowymi lub ciągami, które VBA może przekonwertować na liczbę.

Przed wykonaniem operacji dzielenia liczb całkowitych VBA zaokrągla każdy operand do liczby typu Integer lub Long (tego samego typu co wynik dzielenia liczb całkowitych).

VBA odrzuca (ale nie zaokrągla!) resztę ułamkową wyniku wyrażenia dzielenia liczb całkowitych. Na przykład wyrażenia 22\5 i 24\5 będą miały ten sam wynik = 4.

Jeśli co najmniej jeden operand w wyrażeniu dzielenia liczb całkowitych jest typu Null, wynik dzielenia również ma wartość Null.

Dywizja Modulo (Mod)

Dzielenie modulo niejako uzupełnia dzielenie liczb całkowitych. W dzieleniu modulo wyrażenie zwraca tylko resztę operacji dzielenia jako liczbę całkowitą.
22 Mod 5 = 2
24 Mod 5 = 4
25 Mod 5 = 0

Pozostałe właściwości dzielenia modulo są identyczne jak dzielenia liczb całkowitych.

Potęgowanie (^)

Operator potęgowania podnosi liczbę do potęgi.



Oba operatory w wyrażeniu potęgowania muszą być wyrażeniami liczbowymi lub ciągami, które VBA może przekonwertować na liczby.

Operand po lewej stronie operatora potęgowania może być liczbą ujemną tylko wtedy, gdy operand po prawej jest liczbą całkowitą.

Wynik wyrażenia jest typu Double.

Jeśli co najmniej jeden operand w wyrażeniu jest typu Null, wynik potęgowania również będzie miał wartość Null.


Podsumujmy powyższe.