Excel VBA Range Object

⚡ Умно обобщение

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

  • 🎯 Определение: Обектът „Диапазон“ сочи към единична клетка, ред, колона, селекция или 3D диапазон.
  • 🧬 Йерархия: Пълноквалифицираната препратка гласи „Приложение“, „Работни книги“, „Работни листове“ и след това „Диапазон“.
  • ???? ️ Свойства и методи: Свойството съхранява информация за обекта, а методът извършва действие като Select или Merge.
  • 🔢 Свойство на клетките: Cells(Row, Column) адресира клетка по номер, което е подходящо за програмен цикъл.
  • ✍️ Четене и писане: Свойството Value едновременно извлича съдържанието на клетката и записва ново съдържание обратно.
  • ↔️ Офсетно свойство: Отместването премества препратката с зададен брой редове и колони от началната ѝ клетка.

Excel VBA Range Object

Какво е 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 може да се прилага в два различни типа обекти.

  • Обекти на работен лист
  • Обекти на диапазона

Синтаксис за свойството диапазон

  1. Ключовата дума „диапазон“.
  2. Скоби, които следват ключовата дума
  3. Съответен клетъчен диапазон
  4. Цитат (” “)
Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1")

Когато препращате към Range обект, както е показано по-горе, той се препраща като напълно квалифицирана справкаКазали сте на Excel точно кой диапазон искате, кой лист и в кой работен лист.

ПримерСъобщениеBox Работни листове("Лист1"). Диапазон("A1"). Стойност

Използвайки свойството Range, можете да изпълнявате много задачи като,

  • Обърнете се към единична клетка, като използвате свойството диапазон
  • Обърнете се към единична клетка, като използвате свойството Worksheet.Range
  • Обърнете се към цял ред или колона
  • Обърнете се към обединени клетки, като използвате свойството Worksheet.Range и много други

Като такъв ще бъде твърде дълъг, за да обхване всички сценарии за свойството диапазон. За сценариите, споменати по-горе, ще демонстрираме пример само за един. Обърнете се към единична клетка, като използвате свойството диапазон.

Обърнете се към единична клетка, като използвате свойството Worksheet.Range

За да се обърнете към една клетка, предайте нейния адрес на свойството Range като текстов низ.

Синтаксисът е прост „Диапазон („Клетка“)“.

Тук ще използваме командата ".Select", за да изберете една клетка от листа.

Стъпка 1) В тази стъпка отворете вашия Excel.

Единична клетка, използваща свойството Worksheet.Range

Стъпка 2) В този етап,

  • Кликнете върху Единична клетка, използваща свойството Worksheet.Range бутон.
  • Ще се отвори прозорец.
  • Въведете името на вашата програма тук и щракнете върху бутона „OK“.
  • Ще ви отведе до основния файл на Excel, от горното меню щракнете върху бутона „стоп“ за запис, за да спрете записа на макрос.

Единична клетка, използваща свойството Worksheet.Range

Стъпка 3) В следващата стъпка,

  • Кликнете върху бутона Макро Единична клетка, използваща свойството Worksheet.Range от горното меню. Ще отвори прозореца по-долу.
  • В този прозорец щракнете върху бутона „редактиране“.

Единична клетка, използваща свойството Worksheet.Range

Стъпка 4) Горната стъпка ще отвори редактора на VBA код за файла с име „Single Cell Range“. Въведете кода, както е показано по-долу, за да изберете диапазон „A1“ от листа на Excel.

Sub SingleCellRange()
    Range("A1").Select
End Sub

Единична клетка, използваща свойството Worksheet.Range

Стъпка 5) Сега запазете файла Единична клетка, използваща свойството Worksheet.Range и стартирайте програмата, както е показано по-долу.

Единична клетка, използваща свойството Worksheet.Range

Стъпка 6) Ще видите, че клетка „A1“ е избрана след изпълнение на програмата.

Единична клетка, използваща свойството Worksheet.Range

По същия начин можете да изберете клетка с определено име. Например, ако искате да търсите клетка с име „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

Въпроси и Отговори

Използвайте Cells(Rows.Count, 1).End(xlUp).Row. Започва от долната част на колона A и прескача нагоре до последната клетка, съдържаща данни, което е по-надеждно от UsedRange, след като редовете са изтрити.

Всяко четене или запис се пресича между VBA и Excel. Заредете диапазона в масив с едно присвояване, обработете масива в паметта и след това го запишете обратно с един оператор. Изключването на ScreenUpdating също помага.

Обикновено невалиден адрес, несъществуващо име на лист или опит за избиране на диапазон в работен лист, който не е активен. Квалифицирайте препратката с листа или първо активирайте листа.

Да. Поставете записания код и асистент с изкуствен интелект ще замени всяка двойка Select и Selection с директна, напълно квалифицирана препратка към Range. Изпълнете и двете версии върху копие и сравнете листа, преди да го запазите.ping промяната.

Да. Опишете целта, например всеки попълнен ред в колони от A до D в листа с данни, и асистент с изкуствен интелект ще върне съответстващия израз за диапазон. Проверете го спрямо малка извадка, преди да го изпълните върху данни в реално време.

Обобщете тази публикация с: