- •Министерство образования российской федерации
- •М инистерство образования российской федерации
- •Аннотация
- •Содержание
- •Тема 1. Основы программирования
- •Создание, редактирование и запуск программ
- •Переменные, константы и типы данных
- •Управляющие конструкции
- •Управляющая конструкция If…Then позволяет выполнять один или несколько операторов, если условие истинно. Можно использовать однострочный и блочный синтаксис. Например:
- •Тема 2. Введение в модели объектов
- •2.1. Обзор моделей объектов
- •2.2. Автоматизация операций с использованием объектов
- •2.3. Программирование объектов другого приложения
- •Тема 3. Объекты Microsoft Office
- •3.1. Объекты Microsoft Access
- •3.2. Объекты Microsoft Excel
- •3.3. Объекты Microsoft Power Point
- •3.4. Объекты Microsoft Word
- •Тема 4. Меню и панели инструментов
- •4.1. Средства настройки пользовательского интерфейса
- •4.2. Выбор подходящих элементов пользовательского интерфейса
- •4.3. Система меню
- •4.4. Модификация системы меню на этапе разработки
- •4.5. Модификация системы меню в период выполнения
- •4.6. Панели инструментов
- •4.7. Модификация панелей инструментов на этапе разработки
- •4.8. Модификация панелей инструментов в период выполнения
- •Тема 5. Элементы управления на базе ActiveX и диалоговые окна
- •5.1. Разработка нестандартных диалоговых окон
- •5.2. Использование нестандартных диалоговых окон
- •5.3. Работа с элементами управления в документе, листе или на слайде
- •Тема 6. Оптимизация кода
- •6.1. Основные принципы оптимизации кода
- •6.2. Оптимизация кода для Microsoft Excel
- •6.3. Оптимизация кода для Microsoft Word
- •Тема 7. Отладка и обработка ошибок
- •7.1. Создание обработчика ошибок
- •7.2. Иерархия обработчиков ошибок
- •7.3. Тестирование обработчика за счет эмуляции ошибок
- •7.4. Строчная обработка ошибок
- •7.5. Отключение обработки ошибок
- •7.6. Общие принципы отладки
- •7.7. Режимы конструктора, выполнения и прерывания
- •7.8. Окна отладки
- •7.9. Просмотр стека вызовов
- •Тема 8. Разработка приложений для Интернета и Word Wide Web
- •8.1. Термины и концепции, связанные с Интернетом
- •8.2. Работа с гиперссылками
- •8.3. Сохранение документов и объектов в формате html
- •8.4. Элемент средства просмотра Web Microsoft
- •8.5. Элемент управления Internet Transfer
- •Указывать допустимый сервер-заместитель в свойстве AccessType элемента управления Internet Transfer (таблица 8.4);
- •Элемент управления Internet Transfer автоматически настраивается на нужный протокол, заданный в первой части url. Поэтому применение метода OpenUrl или Execute не требует установки свойства Protocol.
- •8.6. Элемент управления WinSock
- •8.7. Создание персонального Web-сервера
- •Тестовые задания для закрепления материала учебного пособия
- •Рекомендуемая литература
- •Б) дополнительная литература
5.3. Работа с элементами управления в документе, листе или на слайде
Элементы управления на базе ActiveX можно добавить не только в нестандартные диалоговые окна, но и в документ, рабочий лист или на слайд. Например, вставив в документ поля, списки, переключатели и другие элементы, документ приобретает вид интерактивной формы. Можно также включать в рабочий лист кнопки для запуска часто используемых макросов и т.д. Основные отличия при работе с элементами управления в документе, листе или на слайде от операций с этими элементами в нестандартных диалоговых окнах заключаются в следующем:
- элементы управления добавляются в документ, рабочий лист или на слайд с помощью панели инструментов Control Toolbox (Элементы управления) меню View (Вид) команды Toolbars (Панели инструментов), а не Toolbox (Панель элементов);
- в случае нестандартного диалогового окна переключение в режим конструктора, в котором работают с элементами управления и в котором они реагируют на события, требует закрытия этого окна и возврата в редактор Visual Basic. При работе с элементами управления в документе или рабочей книге необходимо переключиться в режим выполнения, активизировав кнопку Exit Design Mode (Выход из режима конструктора) на панели инструментов Visual Basic. В PowerPoint переход в режим выполнения осуществляется запуском демонстрации слайдов, а любая операция редактирования вызывает возврат в режим конструктора;
- у элементов управления в документе, рабочем листе или на слайде может быть набор событий, отличный от того, что определено для него в UserForm.
Тема 6. Оптимизация кода
Visual Basic – чрезвычайно гибкий язык программирования: одну и ту же задачу в нем можно решить несколькими способами.
6.1. Основные принципы оптимизации кода
Каждое обращение к свойству или методу Visual Basic требует одного или нескольких вызовов через OLE-интерфейс IDispatch. Эти вызовы занимают много времени. Поэтому лучший способ повысить быстродействие макроса – свести к минимуму число обращений к этим методам и свойствам. Поскольку для разделения компонентов в операторах Visual Basic используется точка, то отследить число обращений к методам и свойствам проще всего, просчитав количество точек.
Если необходимо неоднократно получать ссылку на один и тот же объект, то можно присвоить ссылку на него объектной переменной и в дальнейшем использовать именно ее. Тогда нет необходимости в регулярном обращении к аксессору объекта, достаточно вызвать его один раз – при установке переменной. Пример, в котором методы Workbooks и Sheets вызываются каждый по два раза:
Workbooks(1).Sheets(1).Range(“c5”).Value = 10
Workbooks(1).Sheets(1).Range(“d10”).Value = 12
Этот код можно оптимизировать, определив объектную переменную, и тогда методы Workbooks и Sheets будут вызваны только по разу:
Set sheet = Workbooks(1).Sheets(1)
sheet.Range(“c5”).Value = 10
sheet.Range(“d10”).Value = 12
Оператор With позволяет исключить повторные ссылки на объекты без определения явных объектных переменных. Применение With устраняет необходимость в промежуточной переменной, определенной в примере из предыдущего раздела, а в остальном эти фрагменты эквивалентны:
With Workbooks(1).Sheets(1)
.Range(“c5”).Value = 10
.Range(“d10”).Value = 12
End With
Перебор элементов набора в цикле For Each … Next осуществляется быстрее, чем в цикле с индексацией. Данный цикл уменьшает размеры макросов, облегчает чтение и отладку кода; кроме того, во многих случаях он просто удобнее.
Значение переменных считываются быстрее, чем значения свойств. Поэтому, если внутри цикла нужно значение какого-то свойства, следует присвоить это значение переменной до входа в цикл, а в самом цикле использовать уже переменную, а не свойство. Если в цикле используются аксессоры (свойства или методы, обеспечивающие доступ к объекту), желательно вынести их за пределы цикла.
Большинство аксессоров позволяет указать конкретный объект в наборе по имени или по индексу. Доступ к объекту обычно быстрее при использовании индекса. Однако доступ к объектам в наборах по именам имеет свои преимущества. Одно из них в том, что использование имен объектов упрощает код для чтения и отладки. Кроме того, ссылка на объект по имени безопаснее ссылки по индексу, так как числовое значение индекса конкретного объекта может измениться при выполнении программы.
Visual Basic тратит на обработку значений, хранимых в переменных типа Variant, больше времени, чем на обработку значений в переменных с явным типом данных. Любые математические операции, не связанные с дробными числами, выполняются значительно быстрее при использовании вместо Variant переменных типа Integer или Long. Эти же переменные предпочтительны и в качестве счетчиков в циклах For … Next.
Разрешение ссылок на объекты, их методы и свойства происходит на этапе компиляции макроса или в период его выполнения. Ссылки, разрешенные при компиляции, действуют быстрее, чем ссылки, разрешаемые при выполнении макроса. При объявлении переменных и аргументов, следует указывать конкретные объектные типы, в этом случае Visual Basic разрешает ссылки на свойства и методы соответствующих объектов еще при компиляции макроса. Кроме того, необходимо полностью квалифицировать ссылки на объекты. Это устраняет неопределенность и гарантирует, что переменная получит ожидаемый тип. Полная ссылка на объект включает имя его библиотеки. Если переменные и аргументы объявляются общим типом Object, Visual Basic откладывает разрешение ссылок на свойства и методы до того момента, когда встретит их вызов при выполнении макроса. В итоге производительность значительно падает.
Применение констант в программе увеличивает скорость ее работы. Константы вычисляются лишь раз и сохраняются в программе при компиляции кода. Переменные же могут изменяться, поэтому Visual Basic должен получать текущее значение переменной при каждом выполнении макроса. Помимо всего прочего, константы упрощают чтение и модификацию кода.
Макрос, модифицирующий внешний вид документа, работает быстрее при отключенном обновлении экрана. Обновление экрана можно оставить включенным на время отладки макроса. Чтобы отключить обновление экрана, необходимо установить свойство ScreenUpdating как False:
Application.ScreenUpdating = False