Организация документооборота с помощью "Visual Basic for Application"
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
йкой. Например, следующая инструкция удаляет содержимое активной ячейки, даже если адрес активной ячейки не известен:
ActiveCell.ClearContents
В следующем примере отображается сообщение, указывающее имя активного листа:
MsgBox ActiveSheet.Name
Если требуется узнать название активной рабочей книги, используйте такой оператор:
MsgBox ActiveBook.Name
Если на рабочем листе выделен диапазон, то заполните этот диапазон одним значением, выполнив единственный оператор. В следующем примере свойство S e l e c t i on объекта Application возвращает объект Range, соответствующий выделенным ячейкам. Оператор изменяет свойство Value этого объекта Range, и в результате получается диапазон, заполненный одним значением.
Selection.Value = 12
Обратите внимание: если выделен не диапазон ячеек (например, объект ChartObject или Shape), то этот оператор выдаст ошибку, так как объекты ChartObject и Shape не обладают свойством Value.
Однако приведенный ниже оператор, присваивает объекту Range, который выделялся перед выделением другого объекта (отличного от диапазона ячеек), значение 12. В справочной системе указано, что свойство RangeSelection относится только к объекту Window:
ActiveWindow.RangeSelection.Value = 12
Чтобы узнать, сколько ячеек выделено на рабочем листе, применяется свойство Count: MsgBox ActiveWindow.RangeSelection.Count
Работа с объектами Range
В основном, работа, которая выполняется в VBA, связана с управлением ячейками и и апазонами на рабочих листах, что и является основным предназначением электронных таблиц.
Объект Range содержится в объекте Worksheet и состоит из одной ячейки или диапазона ячеек на отдельном рабочем листе. В следующих разделах будут рассмотрены три способа задания ссылки на объекты Range в программе VBА.
Свойство Range объекта класса Worksheet или Range.
Свойство Cells объекта Worksheet.
Свойство Offset объекта Range.
Свойство Range
Свойство Range возвращает объект Range. Из справочных сведений по свойству Range можно узнать, что к данному свойству обращаются с помощью нескольких вариантов синтаксиса:
объект.Range(ячейка1);
объект.Range(ячейка1, ячейка2).
Свойство Range относится к одному из двух типов объектов: объекту Worksheet или объекту Range. В данном случае ячейка1 и ячейка2 указывают параметры, которые Excel будет воспринимать как идентифицирующие диапазон (в первом случае) или очерчивающие диапазон (во втором случае). Ниже следует несколько примеров использования метода Range.
Далее приведена инструкция, которая вводит значение в указанную ячейку: значение 1 вводится в ячейку А1 на листе Лист1 активной рабочей книги:
Worksheets("Лист1").Range("Al").Value = 1
Свойство Range также поддерживает имена, определенные в рабочих книгах. Поэтому если ячейка называется Ввод, то для введения значения в эту ячейку может использоваться оператор
Worksheets("Лист1").Range("Ввод").Value = 1
В следующем примере в диапазон из 20-ти ячеек на активном листе вводится одинаковое значение. Если активный лист не является рабочим листом, то отображается сообщение об ошибке:
ActiveSheet.Range("A1:B10").Value = 2
Приведенный ниже пример приведет к тому же результату, что и предыдущий.
Range("Al", "B10") = 2
Отличие заключается лишь в том, что опушена ссылка на лист, поэтому предполагается активный рабочий лист. Кроме того, пропущено свойство, поэтому используется свойство по умолчанию (для объекта Range это свойство Value). В этом примере используется второй синтаксис ссылки на свойство Range. В данном случае первый аргумент это левая верхняя ячейка диапазона, а второй аргумент эго ячейка в правом нижнем углу диапазона.
В следующем примере для получения пересечения двух диапазонов применяется оператор пересечения Excel (пробел). Пересечением является одна ячейка С6. Следовательно, данный оператор вводит значение 3 в ячейку С6:
Range("С1:С10 А6:Е6") = 3
Наконец, в следующем примере значение 4 вводится в пять ячеек, т.е. в независимые диапазоны. Запятая выполняет роль оператора объединения:
Range("Al,A3,А5,А7,А9") = 4
До настоящего момента во всех рассмотренных примерах использовалось свойство Range объекта Worksheet. Ниже показан пример использования свойства Range объекта Range (в данном случае объектом Range является активная ячейка). В этом примере объект Range рассматривается как левая верхняя ячейка на рабочем листе, а затем в ячейку, которая в таком случае была бы В2, вводится значение 5. Другими словами, полученная ссылка является относительной для верхнего левого угла объекта Range. Следовательно, следующий оператор вводит значение 5 в ячейку, расположенную справа внизу от активной ячейки:
ActiveCell.Range("B2" ) = 5
Существует также намного более понятный способ обратиться к ячейке по отношению к диапазону это свойство O f f s e t (см. далее ).
Свойство Cells
Другим способом сослаться на диапазон является использование свойства Cells. Как и Range, можно использовать свойство Cells в объектах Worksheet и Range. Справочная система указывает на три варианта синтаксиса свойства C e l l s :
объект.Cells(номер_строки, номер_столбпа);
объект. Cells (номер_строки);
объект. Cells.
Проиллюстрируем на примерах особенности применения свойства Cells. Вначале в ячейку Al листа Лист1 введем значение 9. В данном случае используется первый синтаксис, где аргументами являются номер строки (от 1 до 65536) и номер столбца (от 1