Zakres zmiennych VBA

Zmienna VBA programu Excel w zakresie

Zmienne są sercem i duszą każdego dużego projektu VBA, ponieważ zmienne są sercem i duszą, więc rodzaj typu danych, który im przypisujemy, jest również bardzo ważnym czynnikiem w tym względzie. W naszych wielu wcześniejszych artykułach wielokrotnie omawialiśmy zmienne i ich znaczenie dla typu danych. Jedną z takich zmiennych i typów danych jest „Zmienna zakresu”. W tym specjalnym, dedykowanym artykule podamy kompletny przewodnik po „Zmiennej zakresu” w Excel VBA.

Co to jest zmienna zakresu w Excel VBA?

Jak każda inna zmienna Zakres w VBA, zmienna jest również zmienną, ale jest to „Zmienna obiektu”, której używamy do ustawiania odniesienia do określonego zakresu komórek.

Jak w przypadku każdej innej zmiennej, możemy nadać zmiennej dowolną nazwę, ale typem danych, które im przypisujemy, powinien być „Zakres”. Kiedy typ danych przypisany do zmiennej staje się „zmienną obiektową” iw przeciwieństwie do innej zmiennej, nie możemy zacząć używać zmiennej zanim ustawimy odniesienie do obiektów w przypadku zmiennych obiektowych.

Zatem po zadeklarowaniu zmiennej musimy użyć słowa kluczowego „SET”, aby ustawić odniesienie do obiektu, czyli w tym przypadku obiekt Range.

Ok, teraz zobaczymy praktycznie kilka przykładów zmiennych zakresu VBA programu Excel.

Przykłady zmiennej zakresu w Excel VBA

Możesz pobrać ten szablon VBA Variable Range Excel tutaj - VBA Variable Range Excel Template

Na przykład załóżmy, że chcesz wybrać zakres komórek od A2 do B10 dla poniższego obrazu zrzutu ekranu.

Aby wybrać wspomniany zakres komórek, gdy mamy obiekt RANGE i wewnątrz obiektu zakresu, wspomnieliśmy o adresie komórki w cudzysłowach.

Kod:

 Sub Range_Variable_Example () Range ("A2: B10") End Sub 

Gdy zakres komórek zostanie wymieniony przy użyciu obiektu RANGE, jeśli umieścisz kropkę, zobaczymy wszystkie właściwości i metody powiązane z tym obiektem zakresu.

Kod:

Sub Range_Variable_Example () Range („A2: B10”). Napis końcowy

Ponieważ musimy zaznaczyć wspomniane komórki w prosty sposób, wybierz metodę „Wybierz” z listy IntelliSense.

Kod:

 Sub Range_Variable_Example () Range („A2: B10”). Wybierz End Sub 

Uruchom kod, a wybierze wspomniane komórki.

To oczywiste, prawda, ale wyobraź sobie scenariusz użycia tego samego zakresu w długim projekcie VBA, powiedzmy sto razy, napisanie tego samego kodu „Range („ A2: A10 ”)” 100 razy zajmie trochę czasu, ale zamiast tego zadeklarujemy zmienną i przypiszemy typ danych jako obiekt „Zakres”.

Ok, podajmy własną nazwę zmiennej i przypiszmy typ danych jako „Zakres”.

Oprócz „zmiennych obiektowych” możemy zacząć używać zmiennych według ich nazw, ale w przypadku „zmiennych obiektowych” musimy ustawić odniesienie.

Na przykład w tym przypadku nasz obiekt zmiennej (Rng) jest zakresem, więc musimy ustawić odniesienie, do którego będzie odnosić się słowo „Rng”. Aby ustawić odniesienie, musimy użyć słowa kluczowego „Set”.

Teraz zmienna „Rng” odnosi się do zakresu komórek od A2 do B10, zamiast wpisywać „ Zakres („ A2: B10 ”))” za każdym razem, gdy możemy po prostu napisać słowo „Rng” .

W następnym wierszu podaj nazwę zmiennej „Rng” i umieść kropkę, aby zobaczyć magię.

Jak widać powyżej, możemy zobaczyć wszystkie właściwości i metody obiektu range, tak jak poprzednio.

Spraw, by zmienna była dynamiczna

Teraz wiemy, jak ustawić odwołanie do zakresu komórek, ale gdy wspomnimy o zakresie komórek, które przylega tylko do tych komórek, jakiekolwiek dodanie lub usunięcie komórek nie wpłynie na te komórki.

Zatem znalezienie nowego zakresu komórek po każdym dodaniu lub usunięciu komórek sprawia, że ​​zmienna ma charakter dynamiczny. Jest to możliwe poprzez znalezienie ostatnio używanego wiersza i kolumny.

Aby znaleźć ostatnio używany wiersz i kolumnę, musimy zdefiniować dwie dodatkowe zmienne.

Kod:

 Sub Range_Variable_Example () Dim Rng As Range Dim LR As Long 'LR = Ostatni wiersz do zrozumienia Dim LC As Long' LC = Ostatnia kolumna do zrozumienia End Sub 

Teraz poniższy kod znajdzie ostatnio używany wiersz i kolumnę, zanim ustawimy odwołanie do zmiennej obiektu zakresu.

Kod:

 Sub Range_Variable_Example () Dim Rng As Range Dim LR As Long 'LR = Last Row for Understanding Dim LC As Long' LC = Last Column for Understanding LR = Cells (Rows.Count, 1). End (xlUp) .Row LC = Cells (1, Columns.Count). End (xlToLeft) .Column End Sub 

Teraz otwórz instrukcję słowa kluczowego „Set”.

Kod:

 Sub Range_Variable_Example () Dim Rng As Range Dim LR As Long 'LR = Last Row for Understanding Dim LC As Long' LC = Last Column for Understanding LR = Cells (Rows.Count, 1). End (xlUp) .Row LC = Cells (1, Columns.Count). End (xlToLeft) .Column Set Rng = End Sub 

W przeciwieństwie do poprzedniej metody, tym razem używamy właściwości VBA CELLS.

Kod:

 Sub Range_Variable_Example () Dim Rng As Range Dim LR As Long 'LR = Last Row for Understanding Dim LC As Long' LC = Last Column for Understanding LR = Cells (Rows.Count, 1). End (xlUp) .Row LC = Cells (1, Columns.Count). End (xlToLeft) .Column Set Rng = Cells (1, 1) End Sub 

Wspomniałem o komórkach (1,1), tj. Odnosi się to do pierwszej komórki w aktywnym arkuszu, ale potrzebujemy odwołania do zakresu danych, więc użyj właściwości „ZMIEŃ ROZMIAR” i wspomnij zmienne „ostatnio używany wiersz i kolumna”.

Kod:

 Sub Range_Variable_Example () Dim Rng As Range Dim LR As Long 'LR = Last Row for Understanding Dim LC As Long' LC = Last Column for Understanding LR = Cells (Rows.Count, 1). End (xlUp) .Row LC = Cells (1, Columns.Count). End (xlToLeft) .Column Set Rng = Cells (1, 1) .Resize (LR, LC) End Sub 

Now this will set the latest reference to the range object variable “Rng”. Next, mention the variable name and use the “Select” method.

 Sub Range_Variable_Example() Dim Rng As Range Dim LR As Long 'LR = Last Row for Understanding Dim LC As Long 'LC = Last Column for Understanding LR = Cells(Rows.Count, 1).End(xlUp).Row LC = Cells(1, Columns.Count).End(xlToLeft).Column Set Rng = Cells(1, 1).Resize(LR, LC) Rng.Select End Sub 

Now I will add a few more lines to my data.

I have added three extra lines of data if I run the code now it should select the latest data range.

Things to Remember

  • The range variable in excel VBA is an object variable.
  • Whenever we use the object variable we need to use the “Set” keyword and set the object reference to the variable.
  • Without setting the reference we cannot use an object variable.