Вход


Главная страница >> Учебный процесс >> Конспекты >> MS Office. Руководство программиста по Visual Basic для MS Office 97 >> Опимизация кода >> Основные принципы оптимизации кода >> Уменьшение числа операций, связанных активизацией и выделением объектов

Переход на главную страницу

Сервер поддерживается
кафедрой информатики и вычислительной техники ГрГУ
тел. +375-(0)152-445-101
E-mail :
kadan@grsu.grodno.by


[Назад]    [Содержание ]    [Вперед]

  


Уменьшение числа операций, связанных активизацией и выделением объектов


В большинстве случаев программа может оперировать с объектами без их активизации. Если Вы учились программировать на Visual Basic по коду, который дает запись макросов, то, вероятно, привыкли перед операцией над объектом активизировать или выделять его. Но средство записи макросов делает так потому, что следует Вашим действиям в пользовательском интерфейсе, ? там Вы активизируете окна и выделяете их содержимое. Но обычно можно написать куда более простой и быстрый код, делающий все то же без активизации или выделения каждого объекта. Например, при заполнении ячеек С1:С20 на листе Sheet5 случайными числами (методом AutoFill) средство записи макросов генерирует такой код:

Sheets( "Sheet5") .Select
Range(?'C1??). Select
ActiveCell.FormulaR1C1 = "=RAND()"
Selection.AutoFill Destination:=Range("C1:C20"), Type:=xlFillDefault
Range( "С1:С20"). Select

Вызовы метода Select не обязательны. Оператор With позволяет написать код, работающий непосредственно с нужным листом и диапазоном:

With Sheets( "Sheet5")
═════.Range("C1").FormulaR1C1 = "=RAND()"
═════.Range(?'C1").AutoFill Destination:=.Range("C1:C20"),_
═════Type:=xlFillDefau.lt
End With

Имейте в виду: средство записи макросов точно фиксирует все, что Вы делаете через пользовательский интерфейс, и ничего не оптимизирует. В записанном макросе вызывается метод AutoFill ? именно так пользователи вводят случайные числа. Но это не самый эффективный способ заполнения диапазона случайными числами. Вы можете сделать то же самое одной инструкцией, как в следующем примере:

Sheets("Sheet5").Range("C1:C20"). Formula = "=RAND()"

Некоторые операции, выполняемые через пользовательский интерфейс (вроде перемещения мышью формулы из отдельной ячейки в диапазон), записываются как вызовы методов (например, AutoFill). Эти вызовы можно исключить при оптимизации, так как Visual Basic позволяет реализовать те же операции другими, более эффективными способами.



[Назад]    [Содержание ]    [Вперед]

  



Текст пособия подготовлен на основе материалов книги
Microsoft Corporation. Руководство программиста по Visual Basic для Microsoft Office 97 / Пер. с англ. - М.: Издательский отдел "Русская Редакция" ТОО "Channel Trading Ltd.", 1997. - 544 с.: илл.
c Оригинальное издание на английском языке,
Microsoft Corporation, 1997
c Русский перевод,
Microsoft Corporation, 1997

  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017