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.