To już ostatni post w serii poświęconej funkcjom informacyjnym. Tym razem sięgnę do zasobów funkcji arkuszowych i przedstawię przykładowe z nich, a konkretnie funkcje
CZY.LICZBA oraz funkcje błędów:
CZY.BRAK, CZY.BŁ i
CZY.BŁĄD. Zadanie to będzie relatywnie łatwe gdyż zakładam, iż każdy z programistów VBA jest co najmniej dobry,m jak nie bardzo dobrym specjalistą w pracy z Excelem.
Na początek przypomnę więc technikę wykorzystania funkcji arkuszowych w programach VBA. Po daną funkcję możemy sięgnąć z wykorzystaniem jednej z dwóch technik (tu dla funkcji SUMA):
1 | WynikSuma = WorksheetFunction.Sum(Range( "a1:a10" )) |
2 | WynikSuma = Application.Sum(Range( "a1:a10" )) |
w obu wypadkach w wyniku otrzymamy sumę obszaru A1:A10 przypisaną do zmiennej WynikSuma, a różnica pomiędzy powyższymi wywołaniami dotyczy sposobu obsługi możłiwych błędów wynikłych w czasie wywołania instrukcji (ale to temat na osobny post).
Wracając do funkcji informacyjnych:
1. Funkcja
CZY.LICZBA dostępna jest z poziomu VBA w postaci instrukcji:
1 | WorksheetFunction.IsNumber() |
Funkcja zwróci wartość TRUE o ile testowana wartość jest liczbą. Podobną funkcją jest funkcja VBA IsNumeric prezentowana w poprzednich postach. Pomiędzy tymi funkcjami wystąpią różnice w wyjątkowych sytuacjach, np.:
1 | IsNumeric( True ) >> zwróci True |
2 | WorksheetFunction.IsNumber( True ) >> zwróci False |
2. Funkcja
CZY.BRAK dostępna jest z poziomu VBA w postaci instrukcji:
1 | WorksheetFunction.IsNA() |
Funkcja ta zwróci TRUE tylko wtedy, gdy testowana wartość, najczęściej komórka arkusza, zawiera błąd typu #N/D.
3. Funkcja
CZY.BŁ dostępna jest z poziomu VBA w postaci instrukcji:
1 | WorksheetFunction.IsErr() |
Funkcja ta zwróci wartość TRUE w przypadku każdego innego błędu niż ten opisany w punkcie 3 powyżej.
4. Funkcja
CZY.BŁĄD dostępna jest z poziomu VBA w postaci instrukcji:
1 | WorksheetFunction.IsError() |
Funkcja ta zwróci TRUE w sytuacji, gdy kontrolowana wartość komórki zawiera błąd dowolnego typu, a więc zarówno błędy obsługiwane przez funkcje z punktu 2 jak i z punktu 3 powyżej.