Как использовать диапазон и ячейки в vba?
Введение в диапазон и ячейки в VBA
Если вы посмотрите на книгу Excel, вы увидите, что все работает вокруг ячеек. Ячейка и диапазон ячеек — это место, где вы храните свои данные, а затем все начинается.
Чтобы максимально эффективно использовать VBA, вам необходимо научиться использовать ячейки и диапазоны в своих кодах. Для этого вам необходимо иметь четкое представление об объектах Range. Используя его, вы можете ссылаться на ячейки в ваших кодах следующим образом:
- Одна ячейка.
- Диапазон ячеек
- Строка или столбец
- Трехмерный диапазон
ОБЪЕКТ ДИАПАЗОНА является частью иерархии объектов Excel: Приложение ➜ Рабочие книги ➜ Рабочие листы ➜ Диапазон и другие места внутри рабочего листа. Итак, если вы напишете код для ссылки на объект RANGE, это будет выглядеть так:
Application.Workbook(“Workbook-Name”).Worksheets(“Sheet-Name”).Range
Ссылаясь на ячейку или диапазон ячеек, вы можете сделать следующее:
- Вы можете прочитать значение.
- Туда можно ввести значение.
- И вы можете вносить изменения в формат.
Чтобы сделать все это, вам нужно научиться ссылаться на ячейку или диапазон ячеек, а в следующем разделе этого руководства вы узнаете, как ссылаться на ячейку разными способами. Чтобы обратиться к ячейке или диапазону ячеек, вы можете использовать три разных метода.
- Пляжная недвижимость
- Свойство ячейки
- Смещение свойства
Что ж, какой из них лучше, зависит от ваших потребностей, но стоит изучить все три, чтобы выбрать тот, который подходит вам лучше всего.
Итак, начнем.
Пляжная недвижимость
Свойство Range — это наиболее распространенный и популярный способ ссылки на диапазон в кодах VBA. С помощью свойства Range вы просто ссылаетесь на адрес ячейки. Позвольте мне рассказать вам синтаксис.
expression.range(address)
Здесь выражение представляет собой переменную, представляющую объект VBA. Итак, если вам нужно обратиться к ячейке A1, вам нужно написать строку кода:
Application.Workbook(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
Приведенный выше код сообщает VBA, что вы имеете в виду ячейку A1, которая находится на листе «Лист1» и книге «Книга1».
Примечание. Всякий раз, когда вы вводите адрес ячейки в объекте диапазона, обязательно заключайте его в двойные кавычки. Но здесь есть что понять. Поскольку вы используете VBA в Excel, нет необходимости использовать слово «Приложение». Таким образом, код будет:
Workbook(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
А если вы находитесь в Book1, вы можете еще больше сократить свой код:
Worksheets(“Sheet1”).Range(“A1”)
Но если вы уже находитесь на листе «Лист1», вы можете еще больше сократить свой код и использовать только:
Range(“A1”)
Теперь предположим, что вы хотите сослаться на весь диапазон ячеек (т. е. на несколько ячеек), вам нужно написать такой код:
Range("A1:A5")
В приведенном выше коде вы упомянули диапазон от A1 до A5, который состоит из пяти ячеек. Вы также можете обратиться к именованному диапазону, используя объект диапазона. Предположим, у вас есть именованный диапазон с именем «Скидка продаж» для ссылки на него. Вы можете написать такой код:
Range("Sales Discount")
Если вы хотите сослаться на прерывистый диапазон, вам нужно сделать что-то вроде этого:
Range("A1:B5,D5:G10")
А если вы хотите сослаться на целую строку или столбец, вам нужно ввести код, подобный приведенному ниже:
Range("1:1") Range("A:A")
К этому моменту вы четко понимаете, как обращаться к ячейке и диапазону ячеек. Но чтобы добиться лучших результатов, вам нужно научиться использовать его для других целей.
Здесь у нас есть полный список руководств, которые вы можете использовать, чтобы научиться работать с диапазонами и ячейками в VBA.
- Подсчет строк с помощью VBA в Excel
- Шрифт Excel VBA (цвет, размер, тип и жирный шрифт)
- Excel VBA Скрыть и показать столбец или строку
- Примените границы к ячейке с помощью VBA в Excel
- Найти последнюю строку, столбец и ячейку с помощью VBA в Excel
- Вставьте строку с помощью VBA в Excel
- Объединить ячейки в Excel с помощью кода VBA
- Выберите диапазон/ячейку с помощью VBA в Excel
- ВЫБЕРИТЕ ВСЕ ячейки на листе, используя код VBA
- ActiveCell в VBA в Excel
- Специальный метод ячеек в VBA в Excel
- Свойство UsedRange в VBA в Excel
- Автоподбор VBA (строки, столбцы или весь лист)
- VBA ClearContents (из ячейки, диапазона или всего листа)
- Диапазон копирования VBA на другой лист + книгу
- VBA Введите значение в ячейку (установить, получить и изменить).
- Столбец вставки VBA (одиночный и множественный)
- Диапазон имени VBA | (Статический + Выбор + Динамический)
- Смещение диапазона VBA
- Диапазон сортировки VBA | (По убыванию, несколько столбцов, ориентация сортировки
- Текст переноса VBA (ячейка, диапазон и весь лист)
- VBA Проверьте, пуста ли ячейка + несколько ячеек
1. Выберите и активируйте ячейку
Если вы хотите выбрать ячейку, вы можете использовать диапазон. Выберите метод. Допустим, если вы хотите выбрать ячейку A5, все, что вам нужно сделать, это указать диапазон, а затем добавить после этого «.Select».
Range(“A1”).Select
Этот код сообщает VBA выбрать ячейку A5, и если вы хотите выбрать диапазон ячеек, просто обратитесь к этому диапазону и просто добавьте после этого «.Select».
Range(“A1:A5”).Select
Существует также другой метод, который можно использовать для активации ячейки.
Range(“A1”).Activate
Здесь нужно помнить, что одновременно активировать можно только одну ячейку. Даже если вы укажете диапазон с помощью метода «.Activate » , он выберет этот диапазон, но активной ячейкой будет первая ячейка в диапазоне.
2. Введите значение в ячейку
Используя свойство range, вы можете ввести значение в ячейку или диапазон ячеек. Давайте разберемся, как это работает, на простом примере:
Range("A1").Value = "Exceladvisor"
В приведенном выше примере вы указали A1 в качестве диапазона, а после этого добавили « .Value », которое сообщает VBA о доступе к свойству значения ячейки.
Следующее, что вам нужно, это знак равенства, а затем значение, которое вы хотите ввести (вы должны использовать двойные кавычки, если вводите текстовое значение). Для числа код будет таким:
Range("A1").Value = 9988
И если вы хотите ввести значение в диапазон ячеек, я имею в виду несколько ячеек, тогда все, что вам нужно сделать, это указать этот диапазон.
Range("A1:A5").Value = "Exceladvisor"
А вот код, если вы имеете в виду прерывистый диапазон.
Range("A1:A5 , E2:E3").Value = "Exceladvisor"
3. Скопируйте и вставьте ячейку/диапазон.
С помощью свойства Range вы можете использовать метод «.Copy», чтобы скопировать ячейку, а затем вставить ее в целевую ячейку. Допустим, вам нужно скопировать ячейку A5, соответствующий код будет:
Range("A5").Copy
Когда вы запускаете этот код, он просто копирует ячейку A5, но следующим шагом будет вставка этой скопированной ячейки в целевую ячейку. Для этого вам необходимо добавить после него ключевое слово назначения, а затем ячейку, в которую вы хотите его вставить. Итак, если вы хотите скопировать ячейку A1, а затем вставить ее в ячейку E5, код будет таким:
Range("A1").Copy Destination:=Range("E5")
Аналогично, если вы имеете дело с диапазоном из нескольких ячеек, код будет выглядеть следующим образом:
Range("A1:A5").Copy Destination:=Range("E5:E9")
Если вы скопировали диапазон ячеек, а затем указали ячейку в качестве целевого диапазона, VBA скопирует весь скопированный диапазон из ячейки, указанной вами в качестве целевого.
Range("A1:A5").Copy Destination:=Range("B1")
Когда вы запускаете приведенный выше код, VBA копирует диапазон A1:A5 и вставляет его в B1:B5, даже если вы упомянули только B1 в качестве диапазона назначения.
Совет: Как и метод «.Copy», вы можете использовать метод «.Cut», чтобы вырезать ячейку, а затем просто использовать место назначения, чтобы вставить ее.
4. Используйте свойство Font со свойством Range.
С помощью свойства range вы можете получить доступ к свойству шрифта ячейки, которое поможет вам изменить все настройки шрифта. Всего у вас есть доступ к 18 различным свойствам шрифта. Допустим, вы хотите сделать текст жирным шрифтом в ячейке A1, код будет такой:
Range("A1").Font.Bold = True
Этот код сообщает VBA о доступе к свойству BOLD шрифта, находящегося в диапазоне A1, и вы установили для этого свойства значение TRUE. Теперь предположим, что вы хотите применить зачеркивание к ячейке A1, этот тайм-код будет таким:
Как я уже сказал, всего вы можете использовать 18 различных свойств, поэтому обязательно проверьте их все, чтобы определить, какое из них вам пригодится.
5. Очистить форматирование ячейки
Используя метод «.ClearFormats», вы можете очистить только формат ячейки или диапазона ячеек. Все, что вам нужно сделать, это добавить «.ClearFormat» после указания диапазона, как показано ниже:
Range("A1").ClearFormats
Когда вы запускаете приведенный выше код, он очищает все форматирование из ячейки A1, и если вы хотите сделать это для всего диапазона, вы знаете, что делать, верно?
Range("A1:A5").ClearFormats
Теперь приведенный выше код просто удалит форматирование из диапазона от A1 до A5.
Свойство ячейки
В дополнение к свойству RANGE вы можете использовать свойство «Ячейки» для ссылки на ячейку или диапазон ячеек на листе. В свойстве ячейки вместо использования ссылки на ячейку необходимо ввести номер столбца и номер строки ячейки.
expression.Cells(Row_Number, Column_Number)
Здесь выражение представляет собой объект VBA, а Row_Number — это номер строки ячейки, а Column_Number — это столбец ячейки. Итак, если вы хотите сослаться на ячейку A5, вы можете использовать код ниже:
Cells(5,1)
Теперь этот код сообщает VBA обратиться к ячейке, которая находится в строке номер пять и столбце номер один. Как следует из синтаксиса, вам нужно ввести номер столбца в качестве адреса, но реальность такова, что вы также можете использовать алфавит столбца, если хотите, просто заключив его в двойные кавычки.
Код ниже также будет относиться к ячейке A5:
Cells(5,"A")
А в VBA, чтобы выбрать его, просто добавьте в конце «.Select».
Cells(5,1).Select
Приведенный выше код выберет ячейку A5, которая находится в 5-й строке и первом столбце листа.
СМЕЩЕНИЕ Свойство
Если вы хотите хорошо работать с диапазонами в VBA, вам нужно знать, как использовать свойство OFFSET. Полезно обращаться к ячейке, которая находится на расстоянии определенного количества строк и столбцов от другой ячейки.
Предположим, что ваша активная ячейка сейчас — B5, и вы хотите перейти к ячейке, которая находится на 3 столбца вправо и на 1 строку ниже от B5, вы можете нажать SHIFT. Ниже приведен синтаксис, который вы должны использовать для OFFSET:
expression.Offset (RowOffset, ColumnOffset)
- RowOffset: в этом аргументе вам нужно указать число, которое сообщит VBA, сколько строк вы хотите пройти. Положительное число определяет линию вниз, а отрицательное число определяет линию вверх.
- ColumnOffset : в этом аргументе вам нужно указать число, которое сообщит VBA, по скольким столбцам вы хотите перемещаться. Положительное число определяет правый столбец, а отрицательное число определяет левый.
Например, давайте напишем простой код, который мы обсуждали выше.
- Прежде всего, вам необходимо определить диапазон, из которого вы хотите перемещаться, и ввести приведенный ниже код:
- После этого введите «.Offset» и введите открывающие круглые скобки, как показано ниже:
- Далее вам нужно ввести номер строки, а затем номер столбца, по которому вы хотите перейти.
- В конце вам нужно добавить «.Select», чтобы указать VBA выбрать ячейку, к которой вы хотите перейти.
Поэтому, когда вы запускаете этот код, он выбирает ячейку, которая находится на одну строку ниже и на 3 столбца справа от ячейки B5.
Измените размер диапазона с помощью OFFSET
СМЕЩЕНИЕ не только позволяет вам перейти к ячейке, но вы также можете изменить размер диапазона. Продолжим пример выше.
Range("B5").Offset(1, 3).Select
Приведенный выше код направляет вас к ячейке E6, и теперь допустим, что вам нужно выбрать диапазон ячеек, состоящий из пяти столбцов и трех строк E6. Итак, что вам нужно сделать, это после использования OFFSET использовать свойство resize, добавив «.Resize».
Range("B5").Offset(1, 3).Resize
Теперь вам нужно ввести размер строки и размер столбца. Введите круглую скобку и введите число, чтобы задать размер строки, а затем число, чтобы задать размер столбца.
Range("B5").Offset(1, 3).Resize(3,5)
В конце добавьте «.Select», чтобы указать VBA выбрать диапазон, и когда вы запустите этот код, он выберет диапазон.
Range("B5").Offset(1, 3).Resize(3, 5).Select
Поэтому, когда вы запустите этот код, он выберет диапазон от E6 до I8.
Range("A1").Font.Strikethrough = True