Смекни!
smekni.com

Макросы в Excel (стр. 2 из 4)

Действуя аналогичным образом, вы можете внести более серьезные изменения в текст макроса. Фактически вы имеете возможность изменять текст программы Visual Basic, реализующий макрос. Это открывает перед вами большие возможности в написании собственных программ.

Удаление макросов

Если макрос назначен клавише быстрого доступа, графическому объекту или кнопке, то процесс удаления является стандартным. Вы выбираете опцию Макрос пункта Сервис основного меню. Появляется окно диалога “Макрос”, содержащее список макросов текущей рабочей книги. После выбора макроса, который вы предполагаете удалить, станут доступными кнопки окна диалога “Макрос”, в том числе кнопка Удалить. Для удаления выбранного макроса вам достаточно нажать эту кнопку.

Макрос можно удалить и другим способом. Если макрос записан в отдельном модуле, то нужно удалить модуль. Для этого нужно сделать его активным, а затем нажать правую кнопку мыши на его ярлычке. Появится окно диалога, в котором нужно выбрать команду Удалить. Если модуль содержит и другие макросы, то нужно выделить весь текст удаляемого макроса и нажать клавишу Del на клавиатуре.

Объекты, которым был назначен макрос, удаляются из режимов редактирования этих объектов.

Определенную трудность представляет процесс удаления строк с названиями макросов из пункта Сервис основного меню. Для их удаления вы можете использовать окно диалога “Редактор меню”, которое открывается нажатием кнопки Редактор меню, расположенной на панели инструментов “Visual Basic”. Вы можете выбрать требующийся пункт меню из списка Меню. При этом в следующем списке Элементы меню появляются опции этого пункта меню. Вы можете выбрать и удалить нужную строку нажатием кнопки Удалить.

Кнопка Сброс окна диалога восстанавливает стандартное состояние всех пунктов основного меню Excel.

После нажатия кнопки Сброс восстановить ранее сделанные в пункты меню назначения с помощью клавиш Ctrl+Z невозможно. Можно только закрыть файл без сохранения всех сделанных изменений, а затем открыть его снова.

Окно диалога “Редактор меню” можно вызвать и без использования кнопки Редактор меню. Для этого нужно выполнить следующие действия:

· Сделайте активным какой-нибудь модуль. Если в рабочей книге нет ни одного макроса, то создайте какой-нибудь макрос (например, не выполняющий никаких действий).

· Выберите пункт Сервис текущего меню. Появится ниспадающее меню, в котором присутствуют дополнительные опции, одной из которых является Редактор меню

· Установите курсор на команду Редактор меню и нажмите клавишу Enter. Появится требуемое окно диалога.

Не создавайте макрос, восстанавливающий пункты меню. Делайте эту работу вручную и вы избежите неприятностей, связанных с потерей информации.

Переименование макроса

Специальной команды для переименования макроса нет, а часто возникает потребность исправить имя или присвоить макросу совершенно новое наименование. Для этого нужно войти в режим редактирования макроса и в тексте программы исправить заголовок.

Пример 4. Изменение имени макроса

Изменим имя макроса “Месяцы” на “Месяцы_с_абсолютными_адресами”. Для этого войдите в режим редактирования макроса “Месяцы”. Ниже расположен текст программы.

Месяцы Макрос Быстрый вызов: Ctrl+o

Sub Месяцы()

ActiveCell.FormulaR1C1 = “январь”

Selection.AutoFill Destination:=ActiveCell.Range(“A1:A12”); _

Type:=xlFillDefault

ActiveCell.Range(“A1:A12”).Select

End Sub

Первая строка является комментарием. Заменим “Месяцы” на “Месяцы_с_абсолютными_адресами”. Соответствующим образом изменим комментарий. В результате получим новый текст программы макроса:

'Месяцы_с_абсолютными_адресами Макрос Быстрый вызов: Ctrl+o

Sub Месяцы_с_абсолютными_адресами()

ActiveCell.FormulaR1C1 = “январь”

Selection.AutoFill Destination:=ActiveCell.Range(“A1:A12”); _

Type:=xlFillDefault

ActiveCell.Range(“A1:A12”).Select

End Sub

Новое имя автоматически заменит старое в списках макросов. По клавише быстрого вызова будет вызываться макрос с новым именем. Но не все замены происходят автоматически. Если ваш макросу были назначены графические объекты или кнопки, то вам нужно будет самим сделать для них переназначения.

Запись в существующий макрос новых действий

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

Сделайте активным модуль, в котором находится макрос.

В тексте программы установите курсор в место ввода новых действий.

Выполните команду Сервис | Запись макроса | Отметить позицию. Теперь ваши действия при записи макроса будут записываться в программу с того места, где вы установили курсор.

Перейдите в лист рабочей книги, где вы будете записывать новые действия.

Выполните команду Сервис | Запись макроса | Записать с отметки. Начиная с этого момента все ваши действия будут записываться в макрос.

Выполните все дополнительные действия макроса.

Нажмите на кнопку Остановить запись.

Рассмотрим конкретный пример добавления новых записей.

Полезно сначала выполнить макрос, в который вы собираетесь добавлять новые записи. Тогда вам легче будет ориентироваться, в каком месте таблицы установить указатель перед тем как начать выполнять действия.

Пример 5. Внесение изменений в существующий макрос

Внесем изменения в макрос “Заголовок”, который был записан в примере 6.2. Изменения будут касаться формата заголовка. Расположим заголовок “Типы компьютеров” в центре строки над названиями типов и введем другой шрифт для заголовка.

Приведем текст программы, реализующий макрос “Заголовок” и укажем место расположения курсора строкой с комментарием “‘место установки курсора”.

Заголовок Макрос назначен пункт меню Сервис “Тип ЭВМ”

Sub Заголовок()

ActiveCell.FormulaR1C1 = “Тип компьютера”

ActiveCell.Offset(1; 0).Range(“A1”).Select

ActiveCell.FormulaR1C1 = “CP_35_SR”

ActiveCell.Offset(0; 1).Range(“A1”).Select

ActiveCell.FormulaR1C1 = “CP_40_SR”

ActiveCell.Offset(0; 1).Range(“A1”).Select

ActiveCell.FormulaR1C1 = “CP_55_LS”

ActiveCell.Offset(0; 1).Range(“A1”).Select

ActiveCell.FormulaR1C1 = “CP_55_SX”

ActiveCell.Offset(0; -3).Range(“A1:D1”).Select

ActiveCell.Activate

Selection.Columns.AutoFi

'место установки курсора

End Sub

Для внесения новых записей в макрос “Заголовок” выполните следующие действия:

· Удалите комментарий в предпоследней строке программы и поместите там указатель.

· Для того чтобы определить позицию, с которой будут записываться новые действия, выполните первые 5 шагов алгоритма внесения изменений в макрос.

· Перед тем как выполнить 6 шаг алгоритма внесения изменений в макрос, запустите макрос “Заголовок”. Это позволит вам определить положение курсора на рабочем листе, где будут вноситься новые действия.

· Выполните 6 шаг алгоритма внесения изменений в макрос. Все последующие действия будут записаны.

· Выделите четыре ячейки, включающие заголовок “Тип компьютера”.

· Вызовите окно диалога “Формат ячейки”, нажав Ctrl+1.

· Выберите вкладку “Выравнивание”, в которой установите флажок Центрировать по выделению. Таким образом мы поместим заголовок в середину строки.

· Выберите вкладку “Шрифт”, в которой установите стиль Italic и размер шрифта 16. Нажмите кнопку OK, чтобы выйти из режима форматирования ячейки.

· Нажмите кнопку Остановить макрос.

После завершения записи новых действий в макрос “Заголовок” мы получили новый текст программы:

Заголовок Макрос назначен пункт меню Сервис “Тип ЭВМ”

Sub Заголовок()

ActiveCell.FormulaR1C1 = “Тип компьютера”

ActiveCell.Offset(1; 0).Range(“A1”).Select

ActiveCell.FormulaR1C1 = “CP_35_SR”

ActiveCell.Offset(0; 1).Range(“A1”).Select

ActiveCell.FormulaR1C1 = “CP_40_SR”

ActiveCell.Offset(0; 1).Range(“A1”).Select

ActiveCell.FormulaR1C1 = “CP_55_LS”

ActiveCell.Offset(0; 1).Range(“A1”).Select

ActiveCell.FormulaR1C1 = “CP_55_SX”

ActiveCell.Offset(0; -3).Range(“A1:D1”).Select

ActiveCell.Activate

Selection.Columns.AutoFit

ActiveCell.Offset(-1; 0).Range(“A1:D1”).Select

With Selection

.HorizontalAlignment = xlCEnterAcrossSelection

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = xlHorizontal

End With

With Selection.Font

.Name = “TimesET”

.FontStyle = “Italic”

.Size = 16

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlNone

.ColorIndex = xlAutomatic

End With

End Sub

Перед последним оператором программы осталась пустая строка. Вы можете удалить ее.

Теперь результат работы макроса “Заголовок” имеет следующий вид:

Тип компьютера

CP_35_SR CP_40_SR CP_55_LS CP_55_SX

Назначение макроса

Назначение макроса графическому объекту

Макрос может вызываться не только нажатием клавиш быстрого вызова, но и нажатием кнопки мыши на графическом объекте. В этом разделе рассказывается о том, как организовать такой вызов макроса.

Для назначения макроса графическому объекту необходимо наличие такого объекта на экране. Представлены три графических объекта, которым назначены макросы.

Для создания графических объектов была вызвана панель инструментов “Рисование”. Для этого необходимо выполнить команду Вид | Панели инструментов, а затем в окне диалога “Панели инструментов” установить флажок на строке Рисование.

Для вызова списка панелей вы можете нажать правую кнопку мыши на любой панели инструментов.

Чтобы нарисовать закрашенный овал или прямоугольник, нажмите кнопку мыши на соответствующем рисунке на панели “Рисование”. Вам будет предложено выбрать место для объекта. Поместите указатель мыши в нужное место таблицы и, удерживая нажатой кнопку мыши, нарисуйте объект — прямоугольник или овал.

Для выбора заливки объекта нажмите правую кнопку мыши на активном объекте. Появится меню, в котором выберите пункт Формат объекта. Появится окно диалога “Форматирование объекта”, в котором выбирается цвет и вид заливки.