[EXCEL] Przekazywanie tablic jako parametrów do funkcji
Witam, nie wiem jak przekazać tablice jako parametr do funkcji. I druga sprawa jak uzyskać na wyjściu funkcji tablicę. Najprostszym przykładem pierwszego problemu jest funkcja [b]SUMA[/b].
Odpowiedzi: 4
No właśnie chodziło mi to. Już sam do tego doszedłem że trzeba przekazać parametr typu [b]range[/b]. Mimo wszystko dziękuje za odpowiedź. Pozdrawiam
Ponieważ niezpełnie rozumiem gdzie zmierzamy to spróbuj przeanalizować coś takiego
Funkcja wywołująca
[b]Function start()
Dim obszar As Range
Set obszar = Range("A1:B10")
start = dwa_razy(obszar)
End Function[/b]
Funkcja licząca (podwaja wartość każdej komórki z jednego zakresu)
[b]Function dwa_razy(zakres As Range)
Dim tablica() As Double 'deklaracja tablicy bez wielkości
Dim licznik As Long 'deklaracja zmiennej dla wierszy
Dim nr As Integer ' deklaracja zmiennej dla kolumn
ReDim tablica(1 To zakres.Rows.Count, 1 To zakres.Columns.Count) 'gdy znamy już wielkość tablicy
For nr = 1 To zakres.Columns.Count 'petla dla kolumn
For licznik = 1 To zakres.Rows.Count 'petla dla wierszy
tablica(licznik, nr) = zakres(licznik, nr).Value * 2 'zapisanie do tablicy podwojonej komórki z zakresu
Next licznik
Next nr
dwa_razy = tablica 'wyprowadzenie danych
End Function[/b]
Jeśli będziesz chciał ją wykorzystać w arkuszu to należy wskazać zakres komórek, przejść do edycji (klawisz F2) i zatwierdzić Ctrl+Shift+Enter
Chyba zapomniałem dopisać że to ma działać jak funkcja w VBA.
Dzięki wielkie na pewno się przydadzą te informację. Nasuwa mi się kolejne pytanko jak zrobić coś takiego tylko żeby parametrem był zakres komórek. Pozdrawiam
Na początek z pomoc z pomocy
[i]Tablica parametrów może być stosowana do przekazywania do procedury tablicy argumentów. Przy definiowaniu procedury nie jest konieczna znajomość liczby elementów tablicy.
Do oznaczenia tablicy parametrów należy używać słowa kluczowego ParamArray. Tablica musi być zadeklarowana jako tablica typu Variant i musi być ostatnim argumentem w definicji procedury.
Poniższy przykład pokazuje, w jaki sposób można zdefiniować procedurę korzystającą z tablicy parametrów:
Sub DowolnaLiczbaArg(strNazwa As String, ParamArray intPunkty() As Variant)
Dim intI As Integer
Debug.Print strNazwa; " Punktacja"
' Zastosuj funkcję UBound, aby określić górne ograniczenie tablicy.
For intI = 0 To UBound(intPunkty())
Debug.Print " "; intPunkty(intI)
Next intI
End Sub
Poniżej przedstawiono przykłady wywołania powyższej procedury:
DowolnaLiczbaArg "Jacek", 10, 26, 32, 15, 22, 24, 16
DowolnaLiczbaArg "Agata", "Dużo", "Mało", "Średnio", "Dużo"[/i]
Czy te informacje są wystarczające?
Pozdrawiam
Strona 1 / 1