Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование VBA.pdf
Скачиваний:
374
Добавлен:
03.05.2015
Размер:
3.07 Mб
Скачать

120

панели выбрать команду Настройка, а затем в одноименном диалоговом окне в списке Панели инструментов установить флажок возле пункта Остановить запись. Как альтернативу можно выполнить команду Сервис

> Макрос > Остановить макрос.

Для выполнения макроса необходимо выполнить команду Сервис > Макрос > Макросы. Отобразится диалоговое окно Макрос. Выделить макрос ВЕДОМОСТЬ_1 и щёлкнуть на кнопке Выполнить.

Можно также выполнить макрос из окна редактора VBA, используя команду Run Sub|UserForm из меню Run или щелкнуть на кнопке Run Sub|UserForm стандартной панели инструментов или нажать клавишу F5.

2.19. Просмотр кода макроса

По ходу записи макроса Excel запоминает действия пользователя и одновременно преобразует их в код VBA. Чтобы увидеть полученный код, нужно выполнить следующие действия.

1.Выберать команду Сервис > Макрос > Макросы. Отобразится диалоговое окно Макрос.

2.Выделите макрос ВЕДОМОСТЬ_1 и щёлкнуть на кнопке Изменить. Откроется окно редактора Microsoft Visual Basic, в котором отобразится код этого макроса.

Sub ВЕДОМОСТЬ_1()

'

'ВЕДОМОСТЬ_1 Макрос

'Макрос записан 15.06.2009 (VAM)

Range("A1:D1").Select With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False End With Selection.Merge Range("A1:D1").Select

ActiveCell.FormulaR1C1 = "ВЕДОМОСТЬ"

With ActiveCell.Characters(Start:=1, Length:=9).Font

.Name = "Arial Cyr"

.FontStyle = "полужирный"

.Size = 12

.Strikethrough = False

121

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

.ColorIndex = xlAutomatic End With Range("A2").Select

ActiveCell.FormulaR1C1 = "Фамилия И.О." Range("B2").Select ActiveCell.FormulaR1C1 = "№зач.кн." Range("C2").Select ActiveCell.FormulaR1C1 = "Дисциплина" Range("D2").Select ActiveCell.FormulaR1C1 = "Оценка" Range("A2:D2").Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic End With

With Selection.Borders(xlInsideVertical)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic End With

End Sub

122

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

В приведённом ниже макросе ВЕДОМОСТЬ_2 удалена вся лишняя информация и изменён способ адресации ячеек, что привело к значительному уменьшению макроса и увеличению его наглядности. Это оказалось проще, чем разрабатывать макрос на пустом месте.

Sub ВЕДОМОСТЬ_2()

'

'ВЕДОМОСТЬ Макрос

'Макрос записан 15.06.2009 (VAM) Range("A1:D1").Select

Selection.HorizontalAlignment = xlCenter Selection.Merge ActiveCell.FormulaR1C1 = "ВЕДОМОСТЬ"

With ActiveCell.Characters(Start:=1, Length:=9).Font

.FontStyle = "полужирный" End With

Range("A2") = "Фамилия И.О." Range("B2") = "№Зач.кн." Range("C2") = "Дисциплина" Range("D2") = "Оценка" Range("A2:D2").Select

Selection.Borders(xlEdgeLeft).Weight = xlThin Selection.Borders(xlEdgeTop).Weight = xlThin Selection.Borders(xlEdgeBottom).Weight = xlThin Selection.Borders(xlEdgeRight).Weight = xlThin Selection.Borders(xlInsideVertical).Weight = xlThin

End Sub

3.Отладка программ

Вредакторе VBA имеется большой набор инструментов и средств для тестирования и отладки разрабатываемых приложений.

Вэтом пункте рассматриваются следующие вопросы.

Тестирование и отладка программ.

Остановка выполнения приложений.

Использование окна Immediate.

Пошаговое выполнение процедур.

Отслеживание значений переменных и свойств.