Объекты – это то, с чем VBA манипулирует в Excel. Поэтому очевидно, что должны существовать объекты-ячейки. В действительности таких объектов нет. Ячейки относятся к объектам-диапазонам (Range-объектам), так же как и собственно диапазоны, столбцы и строки. Для того чтобы что-то сделать с Range-объектом, вам необходимо сначала определить, с чем конкретно вы хотите работать. Существует много способов для определения диапазона. Определение диапазона влечет за собой использование свойства или метода, который возвращает Range-объект.
Вот список средств для определения диапазона:
- Метод Cells позволяет выбрать одну или все ячейки рабочего листа;
- Метод Range возвращает отдельную ячейку, прямоугольную область или несмежную группу ячеек (диапазон);
- AktiveCell– это свойство, которое возвращает единственную активную ячейку в рабочей книге;
- Selection– возвращает выделенный объект. Если выделен диапазон, то возвращается Range-объект;
- Методы Column и Row возвращают весь столбец или строку, или же столбец или строку меньшего диапазона.
Можно выбирать из этих средств, что вам нужно, для определения различных диапазонов.
В чем отличие объекта Range от метода Range? Метод Range – это один из способов, с помощью которого можно задать Range-объект. Метод Range возвращает Range-объект. То же самое делает методCells. Но в VBA нет объекта Cells. (Помните, что VBA представляет все ячейки как небольшие диапазоны).
- Ссылка на одиночную ячейку
Методы Cells и Range могут возвращать ссылку на отдельную ячейку. Различие между этими методами в способах, которые они используют. Но после того, как ячейка возвращена одним из этих методов, VBA не "знает", каким методом это было сделано. Теперь это – просто Range-объект. Один из способов ссылки на отдельную ячейку – это с помощью метода Range.Один из больших недостатков Rangeв том, что вам необходимодавать ссылку на определенную ячейку. А чтобы использовать переменные для указания ячейки, нужно использовать метод Cells.Существуют две особенности при ссылке с помощью Cells. Первая из них состоит в том, что вместо использования символа для указания столбца, используется число или численное выражение. Это – большое преимущество, потому что позволяет использовать переменные и другие выражения, которые оцениваются как числа. Вторая особенность заключается в том, что строка следует первой. Например, при указании ячейки B7 символ B ссылается на столбец, а число 7 – на строку, так что в Excel вы привыкли к обратному: сначала идет столбец. Ссылка на ту же ячейку с использованием метода Cells выглядит так: Cells (7,2).VBA считает, что это – ячейка в седьмой строке второго столбца. Вы можете использовать при ссылке на ячейку буквы в части столбцов, и заменить 2 на "B" (включая кавычки).
- Ссылка на несколько ячеек
Методы Cells и Range могут возвращать ссылку на несколько ячеек. Однако они в этом отношении существенно отличаются. Метод Cells является чем-то вроде предложения "все или ничего"; без аргумента он возвращает все ячейки в рабочем листе. Это может быть полезным, если вам нужно сделать что-либо с каждой ячейкой, например, изменить шрифт. Метод Range является более многосторонним. Вы можете использовать его для выделения прямоугольного блока, нескольких отдельных или комбинации из двух ячеек. Прямоугольные блоки ячеек задаются с использованием ячейки начала и ячейки конца, отделяемых друг от друга ":". Например, Range ("B4:E6").Select. Другой способ использования метода Range – это задавать различные ячейки, отделяемые запятыми. СтрокаRange ("a1, b2, c1, d2").Selectвыделяет указанные четыре ячейки. Заметьте, что в кавычки заключен весь список. А не каждый элемент в отдельности.Эти два приема можно объединить и использовать метод Range для выделения любой комбинации прямоугольных диапазонов и отдельных ячеек. Следующий код выделяет два различных диапазона: Range("A2:C4, D8:F10").Select
- Строки и столбцы
Метод Rows дает возможность выбрать целую строку в рабочем листе или строку в определенном диапазоне. Если вы не укажете объект, то метод будет работать с активным листом. Если это не будет рабочим листом, то метод будет завершен неверно. Данный оператор выделяет всю четвертую строку рабочего листа: Rows (4).Select. Если указывается диапазон, то метод работает иначе. При отсчете строк первой является строка вверху диапазона. Например: Range ("B3:G7").Rows (2). Select выделит вторую строку диапазона B3:G7. Это оказывается диапазоном B4:G4.Метод Columnsработает во многом подобно методу Rows. Вы можете использовать букву в качестве аргумента этого метода, если заключите ее в кавычки. Поэтому, для того, чтобы выбрать третий столбец рабочего листа, вы могли бы использовать Columns(3) или Columns("С").