wtorek, 17 lipca 2007

Obiekt Range, bieżący obszar, praca z zakresami, VBA

Range

Range (zakres komórek) to obiekt, który wykorzystuje się najczęściej.

Zaznaczenie

Najpopularniejszą instancją Range jest Selection, czyli bieżące zaznaczenie.
Tworzenie obiektu
Dim k As Range
Set k = Selection
Jak powiększyć obszar zaznaczenia o jedno pole w prawo i jedno pole w dół:
k.Offset(0, 0).Resize(k.Rows.Count + 1, k.Columns.Count + 1).Select
Jak powiększyć obszar zaznaczenia o jedno pole w lewo i jedno pole w górę:
k.Offset(-1, -1).Resize(k.Rows.Count + 1, _
   k.Columns.Count + 1).Select
Bieżący - aktualnie zaznaczony/aktywny obszar danych
Selection.CurrentRegion.Select
10-ta komórka zaznaczenia:
k.Cells(10).Value
10-ty wiersz zaznaczenia:
k.Rows(10).Select
Poza tym nie powinno się mylić Selection z ActiveCell.

Zaznaczenie obszaru przyległych komórek do komórki aktualnie podświetlonej (aktywnej) można wykonać poprzez:
Range("B2").Select
Selection.CurrentRegion.Select
lub
ActiveCell.CurrentRegion.Select
Znajdowanie brzegowych komórek w bieżącym obszarze wykonuje się:
Selection.End(xlDown).Select
Można też stosować
xlDown    ' w dół
xlToLeft  ' w lewo
xlToRight ' w prawo
xlUp      ' do góry

Kopiowanie zakresów:

Range("B3").Select
Selection.Copy
Range("B4").Select
Selection.Paste
Application.CutCopyMode = False
lub
Range("X11").Copy Range("X2")
Można też podawać pełne ścieżki czyli:
Workbooks("Tester.xls").Sheets("ABC").Range("X263").Copy
Sheets("DABC").Range("Y263").Copy
Jeśli nadamy nazwy zakresom czyli:
Set zakres = Range("B11").Copy
wtedy można stosować przy kopiowaniu nazwy zakresów
zakresA.Copy zakresB
odpowiednio dla przenoszenia byłoby:
zakresA.Cut zakresB

słowa kluczowe: range, zakres, Excel, VBA, Selection, Copy, Paste, CutCopyMode, Cut,

5 komentarzy:

  1. Dzięki wielkie, kolejny raz oszczędzasz mi sporo pracy:)

    OdpowiedzUsuń
  2. dziękuję bardzo :-)

    OdpowiedzUsuń
  3. Bardzo przystępnie omówione;)

    OdpowiedzUsuń
  4. Zajrzałem tu i po przejrzeniu jednego tematu dodaję do zakładek. Takie strony z takimi autorami powinny mieć priorytet w przeglądarkach.
    Dzięki wielkie, coś wspaniałego dla początkujących:)

    OdpowiedzUsuń
  5. A jak zapisać kod żeby zakres komórek z funkcjami pozostał zawsze stały w określonym miejscu np. Range ("A10:A20"). Select, niezależnie od ilości dodawanych/usuwanych wierszy?

    OdpowiedzUsuń