1. Wprowadzenie do funkcji w Excel VBA
Doszedłeś już do rozdziału o funkcjach – Gratulacje, tak trzymaj !!! W VBA mamy do dyspozycji szereg przydatnych funkcji. To właśnie za ich pomocą nasze programy będą działały we właściwy sposób. Za ich pomocą będziemy realizować działania matematyczne, manipulować danymi tekstowymi oraz datami. Do funkcji w VBA odwołujemy się w standardowy sposób poprzez wpisanie nazwy funkcji, argumentów oraz nawiasów: NAZWA_FUNKCJI(argumenty). Funkcje VBA możemy podzielić na następujące grupy:
- Funkcje znakowe
- Funkcje matematyczne
- Funkcje daty i czasu
- Funkcje logiczne
- Funkcje Arkusza Excel – funkcje arkuszowe
- Funkcje użytkownika
- Pozostałe
Za pomocą funkcji Arkusza Excel możemy odwołać się do dowolnej funkcji używanej w Arkuszu. Nazwy funkcji wyświetlają się nam w języku angielskim. Do funkcji Arkusza Excel odwołujemy się po wpisaniu instrukcji Application.WorksheetFunction.NAZWA_FUNKCJI.

Funkcje VBA, podobnie jak w arkuszu danych możemy ze sobą łączyć używając następującej składni: funkcja_2(funkcja_1(argumenty funkcji_1)). Tak więc wynik funkcji_1 jest jednocześnie argumentem funkcji_2. Są to tzw. funkcje zagnieżdżone. Wszelkie potrzebne nam funkcje poznamy w kolejnych rozdziałach naszego kursu.
2. Przykład wykorzystania funkcji
Na początek spróbujmy napisać krótkie makro z wykorzystaniem InputBox i MsgBox, które wyciągnie pierwiastek kwadratowy z wprowadzonej przez nas wartości. Stosujemy w tym celu funkcję Sqr().
Sub FunExample() Dim intValue As Integer intValue = InputBox("Wprowadź wartość") MsgBox (Sqr(intValue)) End Sub
W kolejnym kroku zaokrąglijmy naszą wartość do 2 miejsc po przecinku stosując w tym celu funkcję Round(). Nawiasy obydwu funkcji oczywiście muszą być zamknięte:
Sub FunExample() Dim intValue As Integer intValue = InputBox("Wprowadź wartość") MsgBox (Round(Sqr(intValue))) End Sub
W kolejnym przykładzie skorzystamy z funkcji znakowej. Podobnie jak w poprzednim przykładzie wykorzystajmy elementy InputBox i MsgBox. Naszym celem jest przerobienie wprowadzonej danej tekstowej na tekst pisany wielkimi literami. Wykorzystamy w tym celu funkcję Ucase().
Sub FunExample() Dim intValue As String strValue = InputBox("Wprowadź tekst") MsgBox (UCase(strValue)) End Sub
W kolejnych rozdziałach kursu poznamy po kolei wszystkie poznane nam kategorie funkcji w Excel VBA.
3. Zadania (Wynik możesz zapisać w komentarzu)
3.1 Przerób funkcję z punktu 2. Spraw, by wynik działania wyświetlił się w komórce B2 Arkusza3.
9 komentarzy “Funkcje w Excel VBA”
ok, czekam z niecierpliwością
Sub Zadanie3_1()
Dim intValue As Integer
intValue = InputBox(„Wprowadź wartość”)
Worksheets(„Arkusz3”).Range(„B2”) = Sqr(intValue)
End Sub
W przykładzie 2 powinno być
Round(Sqr(intliczba), 2)
jeśli chcemy zaokrąglić do 2 miejsc po przecinku 🙂
Ogólnie kurs mi się bardzo podoba, na tym etapie dużo nie można wykorzystać w praktyce, ale mam nadzieje że zbieram puzzle żeby potem układać z nich duuuużo większy obraz 🙂
Tak, jak mówisz, to trochę jak puzzle. 🙂 Najważniejsze to załapać trochę praktyki, później już idzie z górki.
Sub FunExample2()
Dim intValue As String
intValue = InputBox(„Wprowadź tekst”)
Worksheets(„Arkusz3”).Range(„b2”) = UCase(intValue)
End Sub
W przykładzie jest błąd, deklarujesz zmienna intValue a używasz później strValue 🙂
Dim intValue As String
strValue = InputBox(„Wprowadź tekst”)
MsgBox (UCase(strValue))
Kurs jest świetny – fajnie tłumaczysz 🙂 Wiedza na pewno się przyda
Nie wiedziałem, o który przykład chodzi, ale generalnie trzeba zastąpić MsgBoxa odwołaniem do komórki w arkuszu 3 🙂
Sub FunExample2()
Dim intValue As String
intValue = InputBox(„Wprowadź tekst”)
Worksheets(„Arkusz3”).Range(„B2”) = (UCase(intValue))
End Sub
Sub funexample11()
Dim intValue As Integer
Sheets(„Arkusz3”).Select
intValue = InputBox(„Wprowadź wartość”)
Cells(2, 2) = (Sqr(intValue))
End Sub
Świetny kurs!
To moje pierwsze kroki z VBA i super jest to, że w zadaniach po każdej z części wplatasz mnóstwo elementów z poprzednich lekcji. Dzięki temu trzeba wysilić mózg, znaleźć w pamięci, jak to było i dzięki temu trwale zapamiętać.
Dzięki, super robota.