Kurs VBA – cz. 15 – funkcje wbudowane

Poznaliśmy już większość klocków potrzebnych do budowania standardowych programów w VBA. Poprzednia część kursu wprowadziła szczególnie dużo informacji. Dzisiaj lżejszy temat, funkcje wbudowane. Jest to swego rodzaju skrzynka narzędziowa, pozwalająca wykonywać różna operacje na liczbach, ciągach znaków i datach.

Funkcje takie używa się tak jak funkcje napisane przez nas. Nie znajdziemy jednak nigdzie ich kodu. Oczywiście nie trzeba uczyć się ich na pamięć. Warto jednak o nich pamiętać. Dokładne informacje o każdej funkcji znajdziemy w pomocy (przycisk F1 przy włączonym VBE). Wystarczy napisać w procedurze daną funkcję, zaznaczyć ją i nacisnąć F1.

Funkcje można podzielić na:

  • matematyczne
  • znakowe
  • daty i czasu
  • inne
Poniższe przykłady przedstawiłem z nawiasami. Trzeba jednak pamiętać, nawiasy umieszczamy, jeżeli funkcja jest argumentem innej. Nie umieszczamy nawiasów, jeżeli jest to pierwsza funkcja w danej linii. Poniżej zastosowana została funkcja replace.
Funkcja MsgBox została użyta bez nawiasów. Replace już wymaga nawiasów, bo jest argumentem dla MsgBox.

Matematyczne

Abs(liczba) – Zwraca wartość bezwzględną liczby.
np: Abs(- 10) zwraca 10, Abs(10) zwraca 10.

Int(liczba), Fix(liczba) – Obie funkcje zwracają część całkowitą liczbyInt(99.8) zwraca 99

W przypadku liczb ujemnych Int zwraca pierwszą liczbę całkowitą mniejszą lub równą liczbie, Fix zwraca dla liczb ujemnych pierwszą większą lub równą liczbę.

Int(-10.4) zwraca -11
Fix(-10.4) zwraca -10

Sgn(liczba) – zwraca cyfrę zależnie od znaku liczby. 

1 – dla liczb dodatnich
0 – dla zera
-1 – dla liczb ujemnych

Sqr(liczba) – Zwraca pierwiastek kwadratowy z liczby.
Round(liczba [, ilość miejsc po przecinku]) – zwraca zaokrąglanie liczby. Drugi argument może być  pominięty, w takim przypadku, zwracane są liczby całkowite.

Znakowe

Chr– Zwraca znak ANSI określony przez liczbę. Argument jest podawany w systemie dziesiętnym.

np. Chr(10) zwraca znak nowej linii. Można go wykorzystać w funkcji msgbox.MsgBox „Pierwsza linia” & Chr(10) & „druga linia”

 

InStr( [start,] ciąg znaków 1, ciąg znaków 2 [,porównanie] – Zwraca pozycję pierwszego ciągu znaków w drugim ciągu. Przeszukiwanie jest rozpoczynane od pozycji start. Ostatni argument najczęściej jest pomijany. W pomocy można znaleźć możliwe wartości ostatniego argumentu oraz omówienie różnych specyficznych przypadków. Na przykład, kiedy nic nie znaleziono lub któryś z ciągów znaków jest pusty.
Left(ciag znaków, długość) – zwraca określoną ilość znaków z lewej strony ciągu.
Right(ciag znaków, długość) – zwraca określoną ilość znaków z prawej strony ciągu.
Len(ciąg) – zwraca całkowitą ilość znaków w ciągu.
Mid(ciąg, start[, długość]) – Zwraca ciąg o długości, rozpoczynający się na pozycji start w ciągu.
Poniżej przykład wykorzystania kilku z powyższych funkcji:
 

 

Daty i czasu

Date() – Zwraca aktualną datę.
DateAdd(  interwał, liczba, data )  – Interwał to ciąg znaków (rok, miesiać, dzień) określający dodawany okres. Drugi argument to ilość dodawanych interwałów do trzeciego argumentu. Pełna listę interwałów można znaleźć w pomocy do funkcji.
DateDiff( interwał, data1, data2[, pierwszy dzień tygodnia [, pierwszy tydzień roku]]) – zwraca liczbę interwałów (dni, miesięcy itp.) pomiędzy data1 i data2.
Day( data ) – zwraca dzień miesiąca z daty podanej jako argument.
Hour( czas ) – wyciąga godzinę (0 -23) z argumentu
IsDate( data lub ciąg znaków) – zwraca prawda lub fałsz, jeżeli argument jest prawidłową datą. Przydatne szczególnie do sprawdzania, czy podany przez użytkownika ciąg znaków jest prawidłową datą. Jeżeli funkcja zwróci prawdę, to możemy taką datę spokojnie używać w innych funkcjach daty. 
Month( data ) – wyciąga numer miesiąca z podanej daty.
Minute( czas ) – wyciąga numer minuty z argumentu (0 – 59)
Now() – zwraca aktualną datę i godzinę.
Time() – zwraca aktualną godzinę.
Second( czas ) – wyciąga sekundę z argumentu.
Year( data ) – wyciąga rok z argumentu.

Inne

Rnd() – zwraca losową liczbę większą/równą zero i mniejszą niż 1. Funkcja ta na jeden opcjonalny argument, najczęściej jednak używa się jej bez niego. Aby uzyskać losową liczbę z zakresu A-B należy użyć poniższej instrukcji.

IIF( wyrażenie-warunek, jeżeli prawda, jeżeli fałsz)  – funkcja ta jest alternatywą dla prostych instrukcji warunkowych IF.

 

Powyższy kod jest równoważny temu:

 

Należy uważać, ponieważ zarówno część „prawda” i „fałsz” są wykonywane ale wynik tylko jednej jest zwracany. Poniższy kod spowoduje wyświetlenie dwóch okienek msgbox (spróbuj sam).

 

Oczywiście na tym nie kończy się lista funkcji Excela. Inne można znaleźć w pomocy. Jednak powyższe pozwolą już wykonać większość przydatnych działań.

Subskrybuj RSS, lub polub blog na Facebooku aby otrzymywać najnowsze informacje o rozwoju kursu.

Zapraszam do zadawania pytań w komentarzach.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *