Jedną z typowych operacji wykonywanych w VBA jest pobieranie danych z kolejnych komórek arkusza i wykonywanie określonych działań na pobranych wartościach. Proste działanie w którym najczęściej wykorzystujemy prostą pętlę
For...Next.
Co jednak ważne, w sytuacji gdy operacja dotyczy wielu komórek o wiele bardziej efektywnym pozostaje przeniesienie wartości komórek do tablicy
Array i przeprowadzenie dalszych działań na elementach tablicy. W sytuacji tej należy jednak pamiętać, że utworzona tablica pozostaje tablicą dwu-wymiarową.
Sytuacja ta ma miejsce także wtedy gdy pobieramy dane z pojedynczej kolumny lub pojedynczego wiersza arkusza. Spójrzmy na poniższy przykład.
utworzenie poniższych tablic:
sprawi, że obie tablice będą dwuwymiarowe. Pobranie z nich wartości C będzie wymagało utworzenia następujących zapytań:
1 | Debug.Print rowArr(1, 3) |
2 | Debug.Print colArr(3, 1) |
Istnieje jednak możliwość utworzenia z w/w tablic tablic jednowymiarowych. Aby to uczynić należy transponować tablice. Prześledźmy to w kolejnych krokach dla obu tablic jednocześnie:
1 | rowArr = Application.Transpose(rowArr) |
2 | colArr = Application.Transpose(colArr) |
W wyniku powyższego działania tablica
rowArr pozostanie dwuwymiarowa podczas gdy
colArr stanie się tablicą jednowymiarową. Aby więc pobrać wartość C z tablic wywołamy następujące instrukcje:
1 | Debug.Print rowArr(3, 1) |
Jeżeli jednak tablicę
rowArr transponujemy ponownie także i ona stanie się jednowymiarową:
1 | rowArr = Application.Transpose(rowArr) |
Brak komentarzy:
Prześlij komentarz