Darmowy webinar z Excela
Już w środę 31 marca 2021r. o godz.19:00 darmowy webinar z Excela:
III Excel Party – makra w Excelu
oraz na kanale YT:
Szczegóły i pliki do pobrania są tu:
https://www.cetnarski.com/pobierz/
Opcje modułu VBA
Na początku każdego modułu w edytorze VBA zawsze pierwsze linijki kodu związane są z jego opcjami. Standardowo pierwsza linia to:
-
- Option Compare
opcja porównania ciągów
-
- Option Compare Binary
cyfrowe porównanie znaków tekstowych, gdzie:
np. “A” < “a” , “12” > “112” - Option Compare Text
tekstowe porównanie znaków tekstowych, gdzie:
np. “A” = “a” - Option Compare Database
(opcja domyślna)
porównanie znaków tekstowych uzależnione od strony kodowej i ustawień regionalnych komputera. Najczęściej jest to zgodne z właściwościami Option Compare Text, czyli
np. “A” = “a”
- Option Compare Binary
-
- Option Explicit
opcja wymuszająca deklarację zmiennych w funkcjach i procedurach zapisanych w module czyli każda ze zmiennych musi być zapisana w bloku np.
Dim Zmienna1 as Integer
Dim Zmienna2 as Date
Domyślnie nie jest wpisana do modułu, ale warto dopisać tę linijką. W ten sposób jeżeli gdzieś w kodzie pojawi się literówka – od razy wyskoczy to przy kompilacji kodu, gdyż niezadeklarowana zmienna nie zostanie zaakceptowana.
Opcję tę można włączyć na stałe jako domyślne ustawienie modułu, zaznaczając checkbox w edytorze VBA Tool–> Options…
- Option Private Module
ukrywanie funkcji i procedur zapisanych w module.
Po wpisaniu tej linijki na początku modułu zapisane w nim publiczne funkcje/procedury są widziane w innych modułach kodu, ale nie są dostępne z poziomu Excela, nie można ich uruchomić jako Makro na karcie Developer. Funkcje publiczne nie są widoczne w funkcjach zdefiniowanych przez użytkownika i nie można ich użyć w komórkach arkusza.
- Option Compare
Typy danych w VBA
Początek kodu każdej funkcji to deklaracja zmiennych. Najczęściej stosowane typy danych to:
Boolean | Typ logiczny. Przyjmuje dwie wartości: True – prawda False – fałsz |
Integer | typ całkowity. Obejmuje liczby całkowite z zakresu -32 768 do 32 767 |
Long | Typ całkowity długi. Obejmuje liczby całkowite z zakresu -2 147 483 648 do 2 147 483 647 |
Currency | Typ wautowy. Obejmuje liczby rzeczywiste z 15 cyfr przed i 4 po przecinku |
Single | Typ rzeczywisty pojedynczej precyzji. Obejmuje liczby rzeczywiste z zakresu: od -3.402823 E38 do -1.401298E-45 oraz od 1.401298E-45 do 3.402823E38 |
Double | Typ rzeczywisty podwójnej precyzji. Obejmuje liczby rzeczywiste z zakresu: od -1.79769313486231E308 do -4.94065645841247E-324 oraz od 4.94065645841247E-324 do 1.79769313486232E308 |
Date | Typ daty. Obejmuje daty od 1 stycznia 1900r. do 31 grudnia 9999r. |
String | Typ łańcuchowy często nazywany także tekstowym. Obejmuje znaki z klawiatury – może ich być od zera do 2 bilionów |
Variant | Typ ogólny. Zadeklarowanie zmiennej jako typ Variant jest w zasadzie jednoznaczne z brakiem deklaracji typu. Dostęp do danych jest jednak dłuższy i spowalnia program. |
Ciekawe dodatki nie tylko do Excela
O dodatkach Excela pisałam już tu kilka razy. To naprawdę małe, przydatne narzędzia w pracy, wzbogacające standardowe możliwości aplikacji pakietu Office.
Pisząc o dodatkach i to nie tylko do Excela, ale również do Outlooka i Worda nie można nie wspomnieć o mistrzu takich dodatków czyli Oskarze.
można znaleźć naprawdę wiele pożytecznych perełek. Niektóre są całkowicie bezpłatne, niektóre odpłatne (choć ceny są całkiem przyjazne).
Warto tam zajrzeć. Wybranym rozwiązaniom będę sukcesywnie poświęcać kolejne notki.
Metody obiektu Range
Najczęściej stosowane metody obiektu Range (czyli komórki lub zakresu komórek) to:
-
- czyszczenie zakresu
- Clear
całkowite usunięcie treści, formatowania, obramowania wyrównania i komentarzy - ClearComments
usuwanie komentarzy - ClearContents
usuwanie treści i formuł - ClearFormats
czyszczenie formatowania
- Clear
- kopiowanie, wycinanie, usuwanie
- Copy
cały zakres zostaje skopiowany do schowka - Cut
komórki zakresu zostają wycięte i przekopiowanie do schowka - Delete
usuwanie zakresu komórek
- Copy
- zaznaczanie
-
- Select
zaznaczanie zakresu
- Select
-
- scalanie, rozcalanie
-
- Merge
scalenie komórek w zakresie - UnMerge
rozcalenie komórek w zakresie
- Merge
-
- czyszczenie zakresu
Jak to wygląda w praktyce? Najprościej daną metodę wybrać z rozwijalnej listy właściwości i metod uaktywnianej po wstawieniu kropki za oznaczeniem zakresu:
Przykładowy fragment kodu zaznaczającego zakres wygląda tak:
Public Sub CzyscZakres() Dim Zakres As Range SET ZakresA=Range(“A1:A10”) Zakres.Clear End Sub |
lub np.tak:
Public Sub ZaznaczZakres() Range(“A1:A10”).Select End Sub |
Excelowy webinar
Kilka dni temu na stronie Excel dla każdego na FB można było uczestniczyć w ciekawym webinarze. Można go podejrzeć tu:
101 trików w Excelu – zapis webinaru
Tylko uwaga – prawidłowy zapis jest od 44 minuty, początek niestety został poważnie zakłócony przez działania botów.
Tabela w Excelu
Tabela w Excelu to nie tylko ładnie opisane, sformatowane i obramowane komórki – takie coś nazywam zawsze tylko tabelką. Prawdziwa tabela to obiekt, mający swoje właściwości i metody.
Załóżmy, że mamy taką tabelkę:
Chcąc przekształcić te komórki w prawdziwą tabelę, zaznaczamy je, a następnie na karcie Wstawianie wciskamy przycisk Tabela. Można też skorzystać ze skrótu klawiaturowego Ctrl+T.
Pojawi się formularz, w którym można zmienić/zatwierdzić zakres danych jakie mają być tabeli.
Po wstawieniu tabeli do arkusza, aktywacja dowolnej jej komórki powoduje wyświetlenie nowej karty Projektowanie.
Domyślnie nadawana nazwa dla obiektu tabeli to Tabela1 (i dalej Tabela2, Tabela3…). Dostępne są też wzory formatowania, możliwość wstawienia wiersza podsumowania i.in.
Mają c już tabelę – na co warto zwrócić uwagę? Jest kilka istotnych właściwości:
nazwy strukturalne
-
- każda tabela musi mieć nagłówek. Jeżeli przy tworzeniu tabeli nie ma wiersza spełniającego takich kryteriów, zostanie automatycznie nadany z nazwami odnoszącymi się do numerów kolumn (Kolumna1, Kolumna2… )
- nagłówki tabelki są nazwami strukturalnymi dla wartości w poszczególnych kolumnach. Widać to chociażby w formułach, w których argumentami są wartości tabeli – nie ma tu odniesień to adresów komórek tylko właśnie do nazw strukturalnych
właściwości ogólne
-
- w wierszu nagłówka automatycznie wbudowane są znaczki autofiltra pozwalające na filtrowanie rekordów tabeli,
- wstawienie formuły w pierwszym wierszu tabeli powoduje, że cała kolumna automatycznie zostaje wypełniona tą formułą, nie trzeba nic przeciągać czy kopiować,
- chcąc dodać kolejny wiersz tabeli -ustawiamy się w ostatniej kolumnie ostatniego wiersza i naciskamy Tab. Nowy wiersz zostanie automatycznie dodany na końcu tabeli, jeszcze przed wierszem podsumowania. W kolumnach z formułami, pojawią się one także w tym nowym wierszu.
- w wierszu podsumowania można modyfikować funkcje agregacji. Nie musi to być suma, może być średnia, liczba rekordów itp.
- po zastosowaniu filtra tabeli – automatycznie zmieniają się wartości wiersza podsumowania, uwzględniając tylko widoczne wartości.
UsedRange
UsedRange to jedna z właściwości arkusza. Zwraca obiekt Range obejmujący zakres używanych komórek. Zakres ten jest wyznaczany jako prostokąt, którego lewym górnym rogiem jest “niepusta” komórka. Istotne jest tu to, że komórką “niepustą” dla zakresu używanego może być komórka, w której nie ma żadnej wartości, ale jest np.sformatowana inaczej niż pozostałe komórki arkusza.
W kodzie VBA wywołanie UsedRange np. aktywnego arkusza wygląda tak:
Public Sub ZakresUzytkowy() Dim ZakresA As Range SET ZakresA=ActiveSheet.UsedRange End Sub |
Dla właściwości UsedRange można też wywołać adres:
UsedRange.Address
A gdzie jest właściwość UsedRange najczęściej używana? M.in. do sprawdzania i czyszczenia różnych śmieci, które czasem pojawiają się w arkuszu i niepotrzebnie obciążają pamięć i rozmiar pliku.
Na Mikołajki
Moje autorskie aplikacje tańsze o 50% – promocja przedłużona do Mikołajek
Zapraszam 🙂
Obiekt Range
Range to obiekt w kodzie VBA oznaczający komórkę lub zakres komórek arkusza.
Dla pojedynczej komórki zapis wygląda np. Range(“A1”)
Dla ciągłego zakresu komórek – np. Range(“A1:C10”) lub Range(“A1″,”C10”) – gdzie A1 to adres komórki w lewym górnym rogu, natomiast C1 to komórka wyznaczająca prawy dolny róg.
Można też przypisać całe kolumny lub wiersze, odwołując się do oznaczenia kolumny lub numeru wiersza.
Np. Range(“1:1”) – odpowiada zakresowi wiersza pierwszego
Range(“A:C”) – zakres kolumn A do C.
W kodzie można odwoływać się także do nazw zdefiniowanych w Menedżerze nazw. Jeżeli mamy taki zakres o nazwie np.MojeKomorki, to można się odwołać do niego poprzez Range(“MojeKomorki”).
Chcąc zadeklarować zakres jako zmienną w kodzie VBA korzystamy z:
Dim ZakresA As Range Dim ZakresB As Range |
Przypisanie wartości (czyli zakresu komórek) do zmiennej typu Range musi być, jak w przypadku wszystkich obiektów VBA, poprzedzone słowem kluczowym Set.
Set ZakresA=Range(“1:1”) Set ZakresB = Range(“A:A”) |
W odniesieniu zakresu Range często wykorzystuje się funkcje:
-
- Intersect(Arg1 as Range, Arg1 as Range,…) as Range
funkcja zwracająca zakres będący częścią wspólną zakresów wprowadzonych jako argumenty - Union(Arg1 as Range, Arg1 as Range,…) as Range
funkcja zwracająca zakres będący sumą zakresów wprowadzonych jako argumenty
- Intersect(Arg1 as Range, Arg1 as Range,…) as Range
Obie funkcje przydają się szczególnie w kodzie związanym ze zdarzeniami arkusza.