Tablice Array, podobnie zresztą jak wszystkie zmienne, w momencie ich deklaracji uzyskują wartość domyślną dla danego typu. I tak np. poniższe tablice przyjmą następujące wartości początkowe:
a. liczby całkowite, wartość początkowa równa 0 (zero)
b. ciągi tekstowe, wartość początkowa- pusty ciąg tekstowy
c. tablica wariant, wartość początkowa- pusta (Empty)
Co należałoby zrobić aby utworzyć tablicę, której elementy zostaną zainicjowane z inną niż domyślna (zerowa) wartość przyjmując jednocześnie założenie, że nie chcemy w tym celu korzystać z pętli? Poniżej kilka z możliwych rozwiązań.
1. Funkcja API FillMemory dla tablic typu Byte
Jeżeli naszą tablicę chcemy wypełnić wartościami z przedziału - do 255 możemy posłużyć się następującym rozwiązaniem opartym o funkcję API:
Składnia funkcji FillMemory:
FillMemory Destination, Length, Fill
gdzie:
Destination to punkt startowy w pamięci deklarowany jako dolny indeks (indeksy) naszej tablicy,
Length to ilość elementów tablicy
Fill to wartość jaką będziemy wypełniać tablicę
2. Evaluate i funkcja arkuszowa
Dla każdego innego rozwiązania możemy posłużyć się poniższą kombinacją funkcji Evaluate, funkcji arkuszowych i deklaracji tablicowych. Poszczególne kroki tej metody zostały opisane w postaci komentarzy w poniższym kodzie.
Uwaga! Rozwiązanie to tworzy tablice z dolnym indeksem równym 1 (a nie 0, co jest wartością domyślną)
3. Kombinacja funkcji arkuszowej i funkcji VBA
W wariancie tym tworzymy tymczasowy ciąg tekstowy składający się z zadanej ilości powtórzeń. Następnie konwertujemy ten ciąg na tablice z wykorzystaniem funkcji Split.
Uwaga końcowa! Po powyższe rozwiązania warto sięgać w sytuacji, kiedy ilość elementów w tablicy przekracza około 10 tyś. W przeciwnym wypadku wystarczy posłużyć się zwykłą pętlą co, choć nie jest efektowne, będzie rozwiązaniem efektywnym.
Brak komentarzy:
Prześlij komentarz