Excel VBA Range Object
⚡ Умно обобщение
Обектът Range в Excel VBA представлява една клетка или група клетки в работен лист. Тази страница обяснява йерархията на обектите, свойствата Range и Cells, избирането и препращането към клетки, четенето и записването на стойности и свойството Offset.

Какво е VBA Range?
VBA Range Object представлява клетка или множество клетки във вашия работен лист в Excel. Това е най-важният обект на Excel VBA. С помощта на обект на обхват на Excel VBA можете да се обърнете към,
- Една клетка
- Ред или колона от клетки
- Избор на клетки
- 3-D гама
Както обсъдихме в предишния ни урок, VBA се използва за записване и изпълнение на МакроНо как VBA идентифицира с кои данни в листа трябва да се работи? Тук са полезни VBA Range Objects.
Въведение в реферирането на обекти във VBA
Обръщане към VBA Range Object на Excel и Object Qualifier.
- Квалификатор на обект: Това се използва за препратка към обекта. Той указва работната книга или работния лист, към който се отнасяте.
За да манипулирате стойностите на тези клетки, Имоти намлява Методи са използвани.
- Имот: Свойството съхранява информация за обекта.
- Метод: Методът е действие на обекта, което ще извърши. Обектът на диапазон може да извършва действия като избиране, копиране, изчистване, сортиране и др.
VBA следва модел на йерархия на обекти, за да се обърне към обект в Excel. Трябва да следвате структурата по-долу. Не забравяйте, че точката тук свързва обекта на всяко от различните нива.
Application.Workbooks.Worksheets.Range
Тази йерархия може да бъде достигната чрез две различни свойства, като свойството Range е най-често използваното.
Как да се обърнете към Excel VBA Range Object чрез свойството Range
Свойството Range може да се прилага в два различни типа обекти.
- Обекти на работен лист
- Обекти на диапазона
Синтаксис за свойството диапазон
- Ключовата дума „диапазон“.
- Скоби, които следват ключовата дума
- Съответен клетъчен диапазон
- Цитат (” “)
Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1")
Когато препращате към Range обект, както е показано по-горе, той се препраща като напълно квалифицирана справкаКазали сте на Excel точно кой диапазон искате, кой лист и в кой работен лист.
ПримерСъобщениеBox Работни листове("Лист1"). Диапазон("A1"). Стойност
Използвайки свойството Range, можете да изпълнявате много задачи като,
- Обърнете се към единична клетка, като използвате свойството диапазон
- Обърнете се към единична клетка, като използвате свойството Worksheet.Range
- Обърнете се към цял ред или колона
- Обърнете се към обединени клетки, като използвате свойството Worksheet.Range и много други
Като такъв ще бъде твърде дълъг, за да обхване всички сценарии за свойството диапазон. За сценариите, споменати по-горе, ще демонстрираме пример само за един. Обърнете се към единична клетка, като използвате свойството диапазон.
Обърнете се към единична клетка, като използвате свойството Worksheet.Range
За да се обърнете към една клетка, предайте нейния адрес на свойството Range като текстов низ.
Синтаксисът е прост „Диапазон („Клетка“)“.
Тук ще използваме командата ".Select", за да изберете една клетка от листа.
Стъпка 1) В тази стъпка отворете вашия Excel.
Стъпка 2) В този етап,
- Кликнете върху
бутон.
- Ще се отвори прозорец.
- Въведете името на вашата програма тук и щракнете върху бутона „OK“.
- Ще ви отведе до основния файл на Excel, от горното меню щракнете върху бутона „стоп“ за запис, за да спрете записа на макрос.
Стъпка 3) В следващата стъпка,
- Кликнете върху бутона Макро
от горното меню. Ще отвори прозореца по-долу.
- В този прозорец щракнете върху бутона „редактиране“.
Стъпка 4) Горната стъпка ще отвори редактора на VBA код за файла с име „Single Cell Range“. Въведете кода, както е показано по-долу, за да изберете диапазон „A1“ от листа на Excel.
Sub SingleCellRange() Range("A1").Select End Sub
Стъпка 5) Сега запазете файла и стартирайте програмата, както е показано по-долу.
Стъпка 6) Ще видите, че клетка „A1“ е избрана след изпълнение на програмата.
По същия начин можете да изберете клетка с определено име. Например, ако искате да търсите клетка с име „Guru99- VBA урок“. Трябва да изпълните командата, както е показано по-долу. Тя ще избере клетката с това име.
Диапазон("Guru99- Урок по VBA“). Изберете
За да приложите друг обект на диапазон, тук е примерният код.
| Диапазон за избиране на клетка в Excel | Деклариран обхват |
|---|---|
| За единичен ред | Диапазон („1:1“) |
| За единична колона | Диапазон („A:A“) |
| За съседни клетки | Диапазон („A1:C5“) |
| За несъседни клетки | Диапазон (“A1:C5, F1:F5”) |
| За пресичане на два диапазона | Диапазон (“A1:C5 F1:F5”) (За пресечна клетка, не забравяйте, че няма оператор запетая) |
| За сливане на клетка | Диапазон („A1:C5“) (За да обедините клетка използвайте командата „сливане“) |
Избирането на клетка е само първата стъпка. На практика макросът чете какво съдържа клетката и записва нова стойност обратно.
Как да четем и записваме стойности с обекта Range
Почти всеки макрос, който докосва работен лист, прави едно от две неща: чете стойност от клетка или записва такава в нея. И двата преминават през свойството Value и нито един от тях не изисква клетката да бъде предварително избрана.
Sub ReadAndWrite() Dim Price As Double Dim Qty As Long ' Read two values out of the sheet Price = Range("B1").Value Qty = Range("B2").Value ' Write the calculated result back Range("B3").Value = Price * Qty ' Fill a whole block in one statement Range("D1:D10").Value = "Guru99" ' Clear only the contents, keeping the formatting Range("F1:F10").ClearContents End Sub
Четири точки правят този модел надежден.
- Изборът не е задължителен: Писане Диапазон („B3“). Стойност = 10 е по-бързо и по-безопасно от първото избиране на клетката. Записаните макроси са пълни с .Select, защото записващото устройство отразява действията на мишката, а не защото кодът се нуждае от това.
- Стойност спрямо текст: .Value връща основните данни, докато .Text връща форматирания низ, показан на екрана, който може да бъде съкратен по ширината на колоната. Чете .Value в изчисленията.
- Цели блокове в един ред: Присвояването на диапазон от няколко клетки запълва всяка клетка наведнъж, което е много по-бързо от loo.ping.
- Изчистете правилното нещо: ClearContents премахва само стойности, Clear премахва и форматирането, а Delete премахва клетките и измества тези около тях.
Диапазонът адресира клетка по нейната буква и номер. Второ свойство адресира същата клетка вместо това с две числа.
Свойство на клетката
Подобно на гамата, в VBA Можете също да използвате свойството „Cell“. Единствената разлика е, че има свойство „item“, което използвате за препращане към клетките в електронната си таблица. Свойството Cell е полезно в цикъл на програмиране.
Например,
Cells.item(Ред, Колона). И двата реда по-долу се отнасят до клетка A1.
- Cells.item(1,1) ИЛИ
- Cells.item(1,”A”)
Разлика между диапазон и клетки във VBA
Диапазонът и клетките достигат до едни и същи клетки в работния лист по различни маршрути, а правилният избор прави кода по-кратък и по-лесен за четене.
| Точка на разликата | Обхват | Клетките |
|---|---|---|
| Формат на адреса | Текстов низ, Range("A1") | Две числа, Cells(1, 1) |
| Множество клетки | Да, Диапазон („A1:C5“) | Една клетка наведнъж |
| Вътре в цикъл | Необходимо е конкатениране на низове | Номерът на реда може да бъде броячът на цикли |
| Четливост | Съвпада с адреса, който виждате в Excel | Колона 27 е по-трудна за представяне от AA |
| Комбинирана употреба | Range(Cells(1, 1), Cells(5, 3)) изгражда A1:C5 от числа | |
Практическото правило е да се използва Range за фиксиран адрес, който можете да прочетете с един поглед, и Cells винаги, когато се изчислява номер на ред или колона по време на изпълнение.
Свойство Range Offset
Свойството Range offset ще избере редове/колони далеч от първоначалната им позиция. Въз основа на декларирания диапазон се избират клетки. Вижте примера по-долу.
Например,
Range("A1").Offset(RowOffset:=1, ColumnOffset:=1).Select
Резултатът от това ще бъде клетка B2. Свойството offset ще премести клетка A1 с 1 колона и 1 ред настрани. Можете да промените стойността на RowOffset / ColumnOffset според нуждите. Можете да използвате отрицателна стойност (-1), за да преместите клетките назад.
Изтеглете Excel, съдържащ горния код
Изтеглете горния Excel файл Code






