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
    • 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
    • zaznaczanie
        • Select
          zaznaczanie zakresu
    • scalanie, rozcalanie
        • Merge
          scalenie komórek w zakresie
        • UnMerge
          rozcalenie komórek w zakresie

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:

Oznaczenia metod to:

 

Oznaczenia właściwości to:

 

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

 


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.


 

Kurs Programowanie VBA w Excelu dla zaawansowanych

 

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

Obie funkcje przydają się szczególnie w kodzie związanym ze zdarzeniami arkusza.

 


 

 

Kurs Excel - makra i VBA dla początkujących

 

Komórki scalone w VBA

Scalanie komórek kodem VBA jest możliwe przy użyciu metody Merge obiektu Range.

Np. dla komórek z zakresu A1:A10

Range(“A1:A10”).Merge

Zdjęcie scalenia to metoda UnMerge

Range(“A1:A10”).UnMerge

To, co istotne w metodach stosowanych w odniesieniu do komórek scalonych (m.in. ClearContents) nie można się odwołać do pojedynczej komórki scalonego zakresu  – trzeba jako Range wpisać cały zakres.

 


 

Kurs Excel - makra i VBA dla początkujących

 

Komórki scalone

Komórki scalone to zakres komórek  scalony do jednej komórki. Zakres ten musi mieć kształt prostokąta (kwadratu).
Narzędzie scalania komórek jest dostępne na karcie Narzędzia główne, grupa opcji Wyrównanie.

Po zaznaczeniu zakresu komórek i naciśnięciu przycisku Scal i wyśrodkuj następuje scalenie komórek do jednej. Jeżeli scalane komórki nie są puste, wyświetli się komunikat ostrzegawczy przed opróżnieniem ich zawartości. Nowa, scalona komórka będzie miała adres i zawartość pierwszej komórki u góry z  lewej strony scalanego zakresu.
Przycisk ten działa jak przełącznik – ustawiając się na którejś z komórek zakresu i naciskając go ponownie – nastąpi zdjęcie scalenia komórek.

Czy warto stosować komórki scalone? Z pewnością tak, choć trzeba pamiętać, że pełnią one rolę głównie ozdobną. Pozwalają na ładne przedstawienie danych w formie tabelki, ale mogą się pojawić problemy przy analizie danych czy odwołaniach funkcji. Jeżeli argumentem jakieś funkcji, w zupełnie innym miejscu arkusza czy skoroszytu jest wartość którejś z dalszych komórek zakresu, wstawiona będzie wartość pusta.
Na screenie widoczny jest przykład, gdy w kolumnie A wstawiona jest data, a w kolumnie B – formuła wyliczająca ilość dni do końca miesiąca w stosunku do daty z kolumny A w tym samym wierszu:

Wartości są prawidłowe tylko w wierszu 2 i 12 czyli tam, gdzie rozpoczyna się scalony zakres (A2 i A12). Wstawiając więc taką formułę czy też zmieniając zakres , trzeba uważać.

 

 


Kurs Excel - zaawansowane techniki

Zakres dynamiczny

Zasady tworzenia nazwanych zakresów komórek opisałam w notce:
Nazwa zakresu
Tak zdefiniowane zakresy są jednak sztywne, zapisane na stałe.  Chcąc je rozszerzyć – trzeba wprowadzić zmiany, edytując odwołanie nazwy.
Nazwy można jednak także opisywać formułą automatycznie zmieniającą zakres wchodzących w jej skład komórek.

Załóżmy, że mamy tabelkę jak na screenie:

Jak zdefiniować taki zakres, który automatycznie zmieni się po dopisaniu wartości w kolejnych komórkach?  Można to zrobić poprzez taką formułę:
=PRZESUNIĘCIE(Arkusz3!$A$1;;;ILE.NIEPUSTYCH(Arkusz3!$A:$A);1)

Tak zdefiniowany zakres będzie się automatycznie zmieniać, gdy dopiszemy kolejne wiersze. W wyniku działania funkcji – wysokość zakresu jest określona  przez liczbę niepustych komórek w kolumnie A.
Bardzo przydatne narzędzie m.in. w liście wybieralnej.


 

 

Nazwa zakresu

Gdy często odwołujemy się do jakiegoś określonego zakresu komórek, warto jest zdefiniować i zapisać pod jakąś nazwą. Służy do tego grupa opcji Nazwy zdefiniowane na karcie Formuły.

Możemy zrobić to na kilka sposobów:

  • zaznaczamy zakres komórek, któremu chcemy przypisać nazwę, klikamy na przycisk Definiuj nazwę i wypełniamy formularz:
    Nadajemy unikalną nazwę, ewentualnie wpisujemy komentarz. Pamiętajmy o ustawieniu prawidłowego zakresu – dana nazwa może być przypisana do całego skoroszytu lub do konkretnego arkusza. Jeżeli ustawimy Zakres na konkretny arkusz – w innych arkuszach ta nazwa nie będzie widziana i nie będzie można się do niej odwoływać. Domyślną opcją jest Skoroszyt.
  • klikamy w przycisk Menedżer nazw, a następnie Nowy…
    Dalsze kroki – jak w poprzednim przykładzie
  • zaznaczamy zakres komórek, w którym znajdują się także planowane nazwy zakresów i naciskamy przycisk Utwórz z zaznaczenia:
    W ten sposób zostały utworzone 2 zakresy o nazwie Dziewczynki i Chłopcy.

 

Przegląd i zakres poszczególnych nazw można sprawdzić w Menedżerze nazw.
Można też je usuwać czy edytować.
A sam Menedżer nazw służy nie tylko do definiowania zakresów, ale także np. do tworzenia własnych formuł – ale to już temat na oddzielną notkę.


 

 

Kurs Excel dla sprzedawców