Podstawowy błąd to założenie że funkcja ma nic nie zwracać (jak to jest pow.)
Nie zwraca procedura, która też może mieć deklarowane zmienne wejściowe.
Czyli powinno być:
Kod: Zaznacz cały
Sub gdzie(szukana_wartosc as Variant, obszar as Range)
A funkcja ma dać nam coś na wyjściu. W tym przypadku chyba liczbę typu Long:
Kod: Zaznacz cały
Function gdzie(szukana_wartosc as Variant, obszar as Range) as Long
Efektywnie też jest, aby po spełnieniu warunku wyjść z pętli.
Dlatego że jeśli mamy w obszarze do przepatrzenia wszystkie kolumny to mamy ich 16k. Jak znajdzie to powinna skończyć literować (wykona się szybciej).
Zmienna
c podawana w pętli nie może być variantem, ale powinna być zakresem. Ponieważ to tego zakresu wartość badamy
.Value:
Zmienna wejściowa
szukana_wartosc nie powinna być tez
variantem, ponieważ ten typ ma ograniczenie w wartości (jak małe sprawdź w helpie). A lepiej przyjąć
String, a jeśli po sprawdzeniu okaże sie liczbą to przypisanie do
Byte, Integer albo Long
Kod: Zaznacz cały
if isnumeric(szukana_wartosc) true then '...