Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Управляющая инструкция Do-Loop
Она похожа на инструкцию While- Wend, однако дополнительно обладает двумя важными особенностями. Во-первых, условие завершения цикла Do- Loop можно задавать не только в его начале, но и в конце. Условие в конце цикла гарантирует, что он будет выполнен хотя бы один раз. Во-вторых, условие можно сделать критерием как выполнения цикла Do- Loop, так и его завершения. Последняя возможность в цикле While- Wend также доступна — чтобы цикл выполнялся, пока не соблюдено некоторое условие, его надо указать в инструкции While с логическим оператором Not. Рассмотрим несколько простых примеров. В программе WhileWend инструкция While- Wend применялась для определения момента, когда в последовательности случайных чисел появлялась семерка. В DoWhileLoop та же операция осуществляется циклом Do- Loop. Sub DoWhileLoop() Dim LotteryEntry As Integer LotteryEntry = 0 Do While LotteryEntry <> 7 LotteryEntry = Int(10 * Rnd()) Beep Loop MsgBox "Выпал номер " & LotteryEntry & ". Вы выиграли!!" End Sub Как видите, эта программа мало отличается от программы WhileWend: во-первых, перед ключевым словом While появилось слово Do, во-вторых, в конце цикла вместо Wend стоит Loop. Однако цикл Do - Loop позволяет переписать эту процедуру еще несколькими способами. В следующем примере слово While заменено словом Until, а вместо оператора неравенства в сравнении LotteryEntry и 7 задан оператор равенства. Sub DoUntilLoop() Dim LotteryEntry и LotteryEntry = 0 Do Until LotteryEntry = 7 LotteryEntry = Int(10 * Rnd()) Beep Loop MsgBox "Выпал номер " & LotteryEntry & ". Вы выиграли!" End Sub Цикл Do- Loop позволяет внести в эту процедуру еще несколько изменений. Например, в программе DoLoopUntil ключевое слово Do оставлено в начале цикла, а условие завершения и ключевое слово Until переместились в его конец, за ключевое слово Loop. В таком варианте цикл обязательно выполняется хотя бы один раз, поскольку условие завершения не проверяется, пока не будут выполнены все инструкции из тела цикла. Поэтому мы можем удалить инструкцию для инициализации переменной LotteryEntry. Sub DoLoopUntil() Dim LotteryEntry As Integer DO LotteryEntry = Int(10 * Rnd()) Beep Loop Until LotteryEntry =7 MsgBox "Выпал номер " & LotteryEntry & ". Вы выиграли!" End Sub А теперь заменим ключевое слово Until в конце цикла словом While. Тогда мы сможем вернуть в условие знак неравенства вместо знака равенства: Sub DoLoopWhile() Dim LotteryEntry As Integer
Do LotteryEntry = Int(10 * Rnd()) Beep Loop While LotteryEntry <> 7 MsgBox "Выпал номер " & LotteryEntry & ". Вы выиграли!" End Sub Инструкция With Инструкция With позволяет существенно сократить обращение к объекту и обладает тремя основными достоинствами: уменьшает объем кода, делает его понятнее и производительнее. Чтобы лучше уяснить действие этой инструкции, рассмотрим два фрагмента кода, решающих одну и ту же задачу: один (БезИспользованияWith) — без использования With, второй (With_Инструкция) — ее средствами. Sub БезИспользованияWith() ActiveWorkbook.Worksheets(2).Range("A1").Font.Bold = True ActiveWorkbook.Worksheets(2).Range("A1").Font.Italic = True ActiveWorkbook.Worksheets(2).Range("A1").Font. Size = 22 ActiveWorkbook.Worksheets(2).Range("A1").Font. Name = _ "Times New Roman" ActiveWorkbook.Worksheets(2).Range("A1").Font.Colorlndex = 3 Worksheets(2).Select End Sub Здесь для изменения свойств объекта Font ячейки A1 второго рабочего листа пришлось ввести 5 команд, состоящих более чем из 360 символов. В этих командах мы 21 раз обращались к объектам и свойствам (рассчитывается по числу точек в инструкциях), а на каждое обращение уходит определенное время. Перепишем ту же программу, используя инструкцию With. Sub With_Инструкция() With ActiveWorkbook.Worksheets(2).Range("A1").Font .Bold = True .Italic = True .Size =22 .Name = "Times New Roman" .Colorlndex = 3 End With Worksheets(2).Select End Sub Программа With_Инструкция содержит 202 символа (56% от объема БезИспользованияWith) и 9 обращений к объектам и свойствам (43%). Можно утверждать, что инструкция With в два раза уменьшает время, необходимое на ввод программы, и в два раза ускоряет ее выполнение. Сравнение этих примеров, конечно, не совсем корректно. В действительности число обращений к объектам в программе БезИспользованияWith можно сократить и без инструкции With. Тем не менее, ее преимущества видны здесь ясно. Естественно, далеко не всегда использование этой инструкции приводит к таким заметным изменениям, и все-таки Ваши программы только выиграют, если Вы запомните следующее правило. Замечание: При любой возможности применяйте инструкцию With, чтобы сократить код, сделать его понятнее и производительнее.. Если Вы обращаетесь к объекту или свойству только однажды, применять инструкцию With, вероятно, бессмысленно. Ситуация меняется, когда Вам нужно сделать это несколько раз. Взгляните на следующий пример.
Sub Пример_с_With() With ActiveWorkbook.Worksheets(3) .Select .Unprotect With. Range("A1") MsgBox.Value .Value = 200 .RowHeight =60 .ColumnWidth = 20 .Font.Size = 20 .Interior.ColorIndex = 3 End With End With End Sub В процедуре Пример_с_With инструкция With использована дважды — одна внутри другой. Сначала программа вызывает методы Select и Unprotect для третьего рабочего листа и выводит в информационном окне содержимое ячейки A1. Затем свойствам Value, RowHeight и ColumnWidth этой ячейки присваиваются новые значения с одновременным изменением размера шрифта и цвета фона. Встроенные функции VBA Наряду с рассмотренными функциями в VBA имеется большой набор функций, которые можно отнести к следующим категориям: § математические функции; § функции проверки типов; § функции преобразования форматов; § функции обработки строк; § функции времени и даты; § финансовые функции Рассмотри некоторые функции из этих категорий: Математические функции Как и в других языках программирования, в VBA имеется большой список математических функций, позволяющих произвести любые вычисления.
Функции проверки типов Отвечают на вопрос, является ли переменная переменной определенного типа. В VBA имеются следующие функции проверки типов:
10.3. Функции преобразования форматов Служат для преобразования одних типов данных в другие:
Функции обработки строк
Функции времени и даты
Обработка ошибок
Когда Вы пишите программу, очень важно чтобы она анализировала ошибки, возникающие по вине пользователя и информировала его об этом. Это можно сделать двумя способами: 1-й способ – предотвращающий ошибки. Программа анализирует водимые или вычисляемые данные, и в случае ошибки информирует об этом пользователя. 2-й способ – обрабатывающий ошибки. В случае появления ошибки программа перехватывает её и создает программный отклик. Как правило, в программировании сочетаются оба способа.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2021-12-15; просмотров: 39; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.91.206 (0.027 с.) |