Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Algoritmizatsia_i_programmirovanie_VBA_polnaya_...doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
12.34 Mб
Скачать

(Для наглядности выделен)

Работа с текущим выделением

При работе с приложением Excel пользователь должен предварительно выделить требуемые ячейки, прежде чем он сможет изменить их значение или формат. Однако в среде VBA предварительное выделение ячеек в окне приложения не требуется, так как для идентификации ячеек, над которыми должны выполняться определенные действия, можно использовать объекты Range. Тем не менее в среде VBA есть инструменты, позволяющие работать и с текущим выделением, выполненным пользователем в окне приложения. Чаще всего они используются для достижения двух целей — когда программе необходимо выяснить, какие ячейки были выделены пользователем, и когда программе требуется указать пользователю то место на рабочем листе, где происходит что-то важное для него.

Очень часто программа должна выполнять некоторые действия в отношении выбранных пользователем ячеек — как это делают встроенные команды Excel. Для доступа из программы к выделенному пользователем диапазону используется объектное свойство Selection (Выделение) объекта Application или Window. Свойство Selection объекта Application возвращает диапазон, выделенный в данный момент на активном рабочем листе. Следующие два оператора идентичны.

Application.Selection.Value = 20

Selection.Value = 20

Если требуется гарантировать, что ссылка относится к определенному окну приложения независимо оттого, какое окно активно в текущий момент, необходимо использовать свойство Selection объекта этого окна. Сохранив полученную объектную ссылку на диапазон, представляющий текущее выделение на требуемом листе, в дальнейшем можно будет повторно обращаться к этому же диапазону.

Dim Диапазон1 As Range

Set Диапазон1 = Windows("Списоктоваров.xlsx").Selection

With Диапазон1 ' Обработка ячеек выделенного диапазона

.CheckSpelling ' Проверка правописания

.Сору ' Копированиевбуфер

End With

Если VBA-программа вносит некоторые изменения в рабочий лист и необходимо, чтобы пользователь их заметил, следует использовать метод Select (Выделить). Этот метод имеется у всех объектов, представляющих различные элементы интерфейса, которые можно выделить в окне приложения, — диапазон, диаграмму или что-либо другое. Поэтому метод Select можно применять фактически к любому существующему в Excel объекту, имеющему визуальное представление в окне приложения, — в том числе к объектам Chart и всем их компонентам (каждая часть диаграммы представлена отдельным VBA-объектом), к объектам Shape (Форма) и, конечно же, к объектам Range.

Для выделения диапазона из программы необходимо сначала активизировать тот рабочий лист, на котором этот диапазон находится, а затем использовать метод Select для соответствующего объекта Range.

With Worksheets("Статотчет")

.Activate 'Активизация рабочего листа

.Range("Рабочие часы").Select ' Выделение именованного диапазона

End With

Следует отметить, что метод Select в применении к объектам Worksheet не выполняет ничего, кроме активизации указанного рабочего листа без изменения уже существующего в нем выделения. Другими словами, он полностью эквивалентен методу Activate объекта Worksheet. Аналогичным образом методы Activate и Select можно использовать для активизации листа диаграммы, но ни один из методов не выделяет самой диаграммы. Для того чтобы выделить компонент диаграммы или внедренную диаграмму, нужно использовать метод Select для требуемого объекта.

Чтобы сделать некоторую ячейку активной для ввода, вызывается метод Activate (Активизировать) объекта Range с указанием данной ячейки. Если активизированная ячейка находится в пределах текущего выделения, весь диапазон остается выделенным. Если же активизированная ячейка находится за пределами выделения, оно автоматически перемещается на активизированную ячейку.

В следующем примере на активном рабочем листе последовательно выделяется диапазон В3:Е10, а затем в его пределах задается активная ячейка (на пересечении третьей строки и второго столбца), в которую будут вставляться вводимые пользователем данные (рисунок 4.9).

Public Sub SelectAndActivate()

Range("B3:E10").Select

Range("B3:E10").Cells.Item(3, 2).Activate

End Sub

Рисунок 4.9 − Выделение диапазона ячеек и указание

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]