tablice - wmiRepo

Transkrypt

tablice - wmiRepo
TABLICE
Bardzo przydatnymi danymi są tablice. Deklarujemy je podobnie do zmiennych, z tą
różnicą, że po nazwie zmiennej podajemy dodatkowo wymiary tablicy. Standardowo
elementy w tablicach numerowane są od zera (choć można to zmienić, wstawiając na górze
modułu linię OptionBase 1, dzięki czemu elemnty tablic będą numerowane od 1). Aby
ustalić samodzielnie zakres indeksów w tablicy podajemy dla każdego wymiaru zakresy
górny i dolny. Na przykład:
Dim Tablica_1 (7) as String, Tablica_2 ( 3 To 7 ) as Double
Dim Tablica_3 (4, 5 To 7) as Integer
Tablica_1 będzie zawierać osiem wierszy numerowanych od 0 do 7, Tablica_2 będzie
zawierać 5 wierszy numerowanych od 3 do 7, a Tablica_3 bedzie zawierać pięć wierszy
numerowanych od 0 do 4 i trzy kolumny numerowane od 5 do 7.
Aby wpisać jakąś daną do tablicy odwołujemy sie do odpowiedniego elementu tablicy
używając indeksów dla każdego wymiaru:
Tablica_1(3)=”Anna”
Tablica_3(1,6)=12.567
W ten sam sposób pobieramy elementy z tablicy.
Znacznie częściej wykorzystywane są tablice dynamiczne, deklarowane bez podawania
wymiarów.
Dim Tablica_Dyn as Variant
Takiej tablicy możemy przypisywać wartości z zakresów w arkuszach:
Tablica_Dyn=Range(„A1:D8”)
Po wykonaniu tego polecenia Tablica_Dyn będzie miała osiem wierszy i cztery kolumny,
numerowane od 1 do 8 i od 1 do 4 odpowiednio. Dodatkowo, można taką tablicę
wykorzystać do przekazania danych z arkusza na przykład do wykresu (serie danych na
wykresach zapisane sa w tablicach), lub do pola listy ListBox. Przykłady takiego
wykorzystania tablic znajdą Państwo w pliku excela Wykresy.xls w module mTablice.
Dużą zaletą tablic dynamicznych jest możliwość zmiany ich wymiarów w trakcie działania
makra. Do teog uzywamy polecenia Redim, po którym podajemy nowe wymiary tablicy:
Redim Tablica_Dyn(1 to 10, 4)
Jeżeli zmieniając wymiary chcemy zachować wartości, które już zostały wpisane do tablicy
używamy słowa Preserve. Trzeba jednak pamiętać, że aby zachować wcześniej wpisane
dane możemy tylko zmieniać ostatni spośród wszystkich wymiarów tablicy na większy
zakres.
Przykładowo:
Tablica_Dyn = Range(„A1:B4”)
Redim Preserve Tablica_Dyn(1 To 4,1 To 5)
Aby odczytać górny (dolny) zakres odpowiedniego wymiaru tablicy używamy komendy
UBound (LBound odpowiednio) z dwoma parametrami – nazwą tablicy i numerem wymiaru
(wymiary numerowane są od 1.
Przykładowo, dla powyższej tablicy Tablica_Dyn polecenie UBound(Tablica_Dyn,2) zwróci
wartość 5, a LBound(Tablica_Dyn,1) wartość 1.
OCHRONA ARKUSZA
Ochronę w arkuszu włączamy poleceniem Protect, które ma różne parametry (zgodne z
parametrami podawanymi podczas włączania ochrony z poziomu Excela). Szczególnie
przydatny jest jeden parametr – UserInterfaceOnly przyjmujący wartości True/False.
Ustawienie tego parametru na wartość True umożliwi zmienianie arkuszy za pomocą makra,
jednocześnie blokując dostęp do arkuszy użytkownikowi. Dostęp jest ograniczony tylko dla
komórek, które zostały zablokowane (tj. podczas formatowania komórek na karcie ochrona
pole zablokuj zostało zaznaczone).
Worksheets(1).Protect UserInterfaceOnly:=True
Jeżeli dodatkowo chcemy, żeby arkusz był chroniony hasłem, podajemy je jako kolejny
parametr:
Worksheets(1).Protect Passwd:=”haslo”, UserInterfaceOnly:=True
Aby wyłączyć ochronę należy użyć polecenia Unprotect. Jeżeli podczas włączania ochrony
zostało podane jakieś hasło, należy je w tym momencie podać jako parametr Passwd.
Worksheets(1).Unprotect
Po zamknięciu pliku, jeżeli w arkuszach włączona jest ochrona – wartość parametru
UserInterfaceOnly zmienia się na False. Wtedy po otworzeniu pliku trzeba ponownie
ustawić ochronę w arkuszach zmieniając wartość tego parametru na True. Warto to zrobić
w makrze uruchamianym podczas otwierania pliku.
UWAGA:
Zmienianie komórek w chronionym arkuszu nie sprawia problemów. Natomiast do
chronionego arkusza nie można wstawiać wykresów. Dlatego przed wstawieniem wykresu do
arkusza należy wyłączyć ochronę w tym arkuszu.

Podobne dokumenty