Funkcje arkuszowe – Jak korzystać z funkcji Excela w VBA
Zastanawiałeś się w jaki sposób możemy skorzystać z funkcji Excela w VBA? Z pomocą przychodzą nam funkcje arkuszowe. Jak wiemy, arkusz Excela oferuje nam szereg użytecznych funkcji. Zasób funkcji, z których możemy korzystać w kodzie VBA jest nieco bardziej ograniczony. Dzięki VBA możemy bez przeszkód korzystać z części funkcji, które oferuje nam arkusz danych Excela. Nie są to wszystkie dostępne funkcje, jednak znacząco poszerzają i ułatwiają nam programowanie w VBA. W przypadku, gdybyśmy chcieli skorzystać z funkcji arkusza danych, możemy je wywołać krótkim poleceniem
w dowolnym kodzie VBA w Excelu: Application.WorksheetFunction.ANGIELSKA_NAZWA_FUNKCJI. Samą nazwę funkcji musimy wprowadzić zgodnie z angielskim nazewnictwem. Poniżej przykład zastosowania funkcji zaokrąglającej, którą z Excela znamy pod nazwą ZAOKR(). Przykład zawiera dwie wersje. Wersja pierwsza, to wykorzystanie funkcji arkuszowej. Przykład drugi przedstawia analogiczną funkcję, którą oferuje nam kod VBA. Sam wynik wyświetlmy w formie okna MsgBox.
Sub WorksheetFunctionExample() MsgBox "Wynik funkcji arkuszowej: " & Application.WorksheetFunction.Round(123.666, 2) MsgBox "Wynik funkcji VBA: " & Round(123.666, 2) End Sub
Jak widzimy na naszym przykładzie, wyniki zastosowania naszych funkcji są takie same.
Funkcje arkuszowe VBA – Zadania (Rozwiązanie możesz wpisać w komentarzu)
2.1 Wypróbuj działanie funkcji max oraz min na dowolnych danych liczbowych wykorzystując funkcje arkuszowe VBA.
3.2 Sprawdź czy funkcję WYSZUKAJ.PIONOWO() możesz wywołać poprzez kod VBA. Rozwiązanie znajdziesz w tym artykule.
5 komentarzy “Funkcje arkusza danych w Excel VBA”
Zadanie 1.
Function maxx(tabela As Object) As Integer
maxx = Application.WorksheetFunction.max(tabela)
End Function
Zadanie 2.
Function WyszukajPionowo(Szukana_wartość As Integer, tabela As Object, NumerKolumny As Integer, DokładnaWartość As Boolean) As Variant
WyszukajPionowo = Application.WorksheetFunction.VLookup(Szukana_wartość, tabela, NumerKolumny, DokładnaWartość)
End Function
2.1
Option Explicit
Sub FunkcjeArkuszowe2()
MsgBox „Najmniejsza z liczb zbioru 1-11 jest: ” & Application.WorksheetFunction.Min(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
MsgBox „Największą z liczb zbioru 1-11 jest: ” & Application.WorksheetFunction.Max(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
End Sub
2.2
Wychodzi na to, że nie ma możliwości zaimportowania funkcji wyszukaj pionowo do VBA. Program generuje błąd 1004
I korekta.
Błąd był generowany, ponieważ nie wskazałem w funkcji zasięgu komórek. W sensie wskazałem go tak, jak w funkcji arkuszowej, a nie z poleceniem Range.
Teraz wykminić tylko, w jaki sposób zmusić VBA do automatycznego sprawdzenia kiedy kończy się ciąg komórek, dla których wyszukujemy wartości.
świetny kurs
Sub Wyszukaj_Pionowo()
Dim a As String
'zakres danych A1-B7
a = InputBox(„Wprowadź szukany tekst”)
MsgBox Application.WorksheetFunction.VLookup(a, Range(„A1:B7”), 2, 0)
End Sub
zad 1
Sub minmax()
MsgBox „Wynik funkcji arkuszkowej: ” & Application.WorksheetFunction.Min(3, 4, 5, 222, 1)
MsgBox „Wynik funkcji arkuszkowej: ” & Application.WorksheetFunction.Max(3, 4, 5, 222, 1)
End Sub
zad 2
Sub wyszukajpionowo()
Dim wartosc As Integer
wartosc = InputBox(„Wprowadz szukaną wartość”)
MsgBox Application.WorksheetFunction.VLookup(wartosc, Sheets(„Sheet2”).Range(„A1:B5”), 2, 1)
End Sub
tablica w zakresie Range(„A1:B5”) tak wyglądała. Punktacja i skala ocen
0
1
15
2
20
3
25
4
30
5