Решения, условия, алгоритмы if, then, switch в VBA Excel

Первое знакомство с редактором VBA Excel, создание процедур (подпрограмм) и написание простейшего кода, работающего с переменными и ячейками рабочего листа.

Начинаем программировать с нуля Часть 1. Первая программа [Часть 1] [Часть 2] [Часть 3] [Часть 4]

Содержание 1. Знакомство с редактором VBA 2. Первая программа на VBA Excel 3. Работа с переменными 4. Изменение содержимого ячеек Эта статья предназначена для тех, кто желает научиться программировать в VBA Excel с нуля. Вы увидите, как это работает, и убедитесь, что не все так сложно, как кажется с первого взгляда. Свою первую программу вы напишите за 7 простых шагов.

Знакомство с редактором VBA

  1. Создайте новую книгу Excel и сохраните ее как книгу с поддержкой макросов с расширением .xlsm. В старых версиях Excel по 2003 год – как обычную книгу с расширением .xls.
  2. Нажмите сочетание клавиш «Левая_клавиша_Alt+F11», которое откроет редактор VBA. С правой клавишей Alt такой фокус не пройдет. Также, в редактор VBA можно перейти по ссылке «Visual Basic» из панели инструментов «Разработчик» на ленте быстрого доступа. Если вкладки «Разработчик» на ленте нет, ее следует добавить в настройках параметров Excel.

image

В левой части редактора VBA расположен проводник проекта, в котором отображены все открытые книги Excel. Верхней строки, как на изображении, у вас скорее всего не будет, так как это – личная книга макросов. Справа расположен модуль, в который записываются процедуры (подпрограммы) с кодом VBA. На изображении открыт модуль листа, мы же далее создадим стандартный программный модуль.

  1. Нажмите кнопку «Module» во вкладке «Insert» главного меню. То же подменю откроется при нажатии на вторую кнопку после значка Excel на панели инструментов.

image

После нажатия кнопки «Module» вы увидите ссылку на него, появившуюся в проводнике слева.

Первая программа на VBA Excel

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

  1. Откройте стандартный модуль двойным кликом по его ссылке в проводнике. Поместите в него курсор и нажмите кнопку «Procedure…» во вкладке «Insert» главного меню. Та же ссылка будет доступна при нажатии на вторую кнопку после значка Excel на панели инструментов.

В результате откроется окно добавления шаблона процедуры (Sub).

  1. Наберите в поле «Name» имя процедуры: «Primer1», или скопируйте его отсюда и вставьте в поле «Name». Нажмите кнопку «OK», чтобы добавить в модуль первую и последнюю строки процедуры.

Имя процедуры может быть написано как на латинице, так и на кириллице, может содержать цифры и знак подчеркивания. Оно обязательно должно начинаться с буквы и не содержать пробелы, вместо которых следует использовать знак подчеркивания.

  1. Вставьте внутрь шаблона процедуры следующую строку: MsgBox "Привет".

Функция MsgBox выводит информационное сообщение с указанным текстом. В нашем примере – это «Привет».

  1. Проверьте, что курсор находится внутри процедуры, и запустите ее, нажав клавишу «F5». А также, запустить процедуру на выполнение можно, нажав на треугольник (на изображении под пунктом меню «Debug») или на кнопку «Run Sub/UserForm» во вкладке «Run» главного меню редактора VBA Excel.

Если вы увидели такое сообщение, как на изображении, то, поздравляю – вы написали свою первую программу!

Работа с переменными

Чтобы использовать в процедуре переменные, их необходимо объявить с помощью ключевого слова «Dim». Если при объявлении переменных не указать типы данных, они смогут принимать любые доступные в VBA Excel значения. Комментарии в тексте процедур начинаются со знака «'» (апостроф).

Пример 2 Присвоение переменным числовых значений:

Пример 3 Присвоение переменным строковых значений:

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

Изменение содержимого ячеек

Для обозначения диапазонов, в том числе и отдельных ячеек, в VBA Excel имеется ключевое слово «Range». Ячейке A1 на рабочем листе будет соответствовать выражение «Range(“A1”)» в коде VBA Excel.

Пример 4

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

Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

Приветствую всех.

В этом посте я расскажу, что такое VBA и как с ним работать в Microsoft Excel 2007/2010 (для более старых версий изменяется лишь интерфейс — код, скорее всего, будет таким же) для автоматизации различной рутины.

VBA (Visual Basic for Applications) — это упрощенная версия Visual Basic, встроенная в множество продуктов линейки Microsoft Office. Она позволяет писать программы прямо в файле конкретного документа. Вам не требуется устанавливать различные IDE — всё, включая отладчик, уже есть в Excel.

Еще при помощи Visual Studio Tools for Office можно писать макросы на C# и также встраивать их. Спасибо, .

Сразу скажу — писать на других языках (C++/Delphi/PHP) также возможно, но требуется научится читать, изменять и писать файлы офиса — встраивать в документы не получится. А интерфейсы Microsoft работают через COM. Чтобы вы поняли весь ужас, вот Hello World с использованием COM.

Поэтому, увы, будем учить Visual Basic.

Итак, поехали. Открываем Excel.

Для начала давайте добавим в Ribbon панель «Разработчик». В ней находятся кнопки, текстовые поля и пр. элементы для конструирования форм.

Появилась вкладка.

Теперь давайте подумаем, на каком примере мы будем изучать VBA. Недавно мне потребовалось красиво оформить прайс-лист, выглядевший, как таблица. Идём в гугл, набираем «прайс-лист» и качаем любой, который оформлен примерно так (не сочтите за рекламу, пожалуйста):

То есть требуется, чтобы было как минимум две группы, по которым можно объединить товары (в нашем случае это будут Тип и Производитель — в таком порядке). Для того, чтобы предложенный мною алгоритм работал корректно, отсортируйте товары так, чтобы товары из одной группы стояли подряд (сначала по Типу, потом по Производителю).

Результат, которого хотим добиться, выглядит примерно так:

Разумеется, если смотреть прайс только на компьютере, то можно добавить фильтры и будет гораздо удобнее искать нужный товар. Однако мы хотим научится кодить и задача вполне подходящая, не так ли?

Для начала требуется создать кнопку, при нажатии на которую будет вызываться наша програма. Кнопки находятся в панели «Разработчик» и появляются по кнопке «Вставить». Вам нужен компонент формы «Кнопка». Нажали, поставили на любое место в листе. Далее, если не появилось окно назначения макроса, надо нажать правой кнопкой и выбрать пункт «Назначить макрос». Назовём его FormatPrice. Важно, чтобы перед именем макроса ничего не было — иначе он создастся в отдельном модуле, а не в пространстве имен книги. В этому случае вам будет недоступно быстрое обращение к выделенному листу. Нажимаем кнопку «Новый».

И вот мы в среде разработки VB. Также её можно вызвать из контекстного меню командой «Исходный текст»/«View code».

Перед вами окно с заглушкой процедуры. Можете его развернуть. Код должен выглядеть примерно так:

Sub FormatPrice() End Sub

Напишем Hello World:

Sub FormatPrice()     MsgBox "Hello World!" End Sub

И запустим либо щелкнув по кнопке (предварительно сняв с неё выделение), либо клавишей F5 прямо из редактора.

Тут, пожалуй, следует отвлечься на небольшой ликбез по поводу синтаксиса VB. Кто его знает — может смело пропустить этот раздел до конца. Основное отличие Visual Basic от Pascal/C/Java в том, что команды разделяются не ;, а переносом строки или двоеточием (:), если очень хочется написать несколько команд в одну строку. Чтобы понять основные правила синтаксиса, приведу абстрактный код.

Примеры синтаксиса

' Процедура. Ничего не возвращает ' Перегрузка в VBA отсутствует Sub foo(a As String, b As String)     ' Exit Sub ' Это значит "выйти из процедуры"     MsgBox a + ";" + b End Sub ' Функция. Вовращает Integer Function LengthSqr(x As Integer, y As IntegerAs Integer     ' Exit Function     LengthSqr = x * x + y * y End Function Sub FormatPrice()     Dim s1 As String, s2 As String     s1 = "str1"     s2 = "str2"     If s1 <> s2 Then         foo "123""456" ' Скобки при вызове процедур запрещены     End If     Dim res As sTRING ' Регистр в VB не важен. Впрочем, редактор Вас поправит     Dim i As Integer     ' Цикл всегда состоит из нескольких строк     For i = 1 To 10         res = res + CStr(i) ' Конвертация чего угодно в String         If i = 5 Then Exit For     Next i     Dim x As Double     x = Val("1.234"' Парсинг чисел     x = x + 10     MsgBox x     On Error Resume Next ' Обработка ошибок - игнорировать все ошибки     x = 5 / 0     MsgBox x     On Error GoTo Err ' При ошибке перейти к метке Err     x = 5 / 0     MsgBox "OK!"     GoTo ne Err:     MsgBox "Err!" ne:     On Error GoTo 0 ' Отключаем обработку ошибок     ' Циклы бывает, какие захотите     Do While True         Exit Do     Loop 'While True     Do 'Until False         Exit Do     Loop Until False     ' А вот при вызове функций, от которых хотим получить значение, скобки нужны.     ' Val также умеет возвращать Integer     Select Case LengthSqr(Len("abc"), Val("4"))     Case 24         MsgBox "0"     Case 25         MsgBox "1"     Case 26         MsgBox "2"     End Select     ' Двухмерный массив.     ' Можно также менять размеры командой ReDim (Preserve) - см. google     Dim arr(1 to 10, 5 to 6) As Integer     arr(1, 6) = 8     Dim coll As New Collection     Dim coll2 As Collection     coll.Add "item""key"     Set coll2 = coll ' Все присваивания объектов должны производится командой Set     MsgBox coll2("key")     Set coll2 = New Collection     MsgBox coll2.Count End Sub

Грабли-1. При копировании кода из IDE (в английском Excel) есь текст конвертируется в 1252 Latin-1. Поэтому, если хотите сохранить русские комментарии — надо сохранить крокозябры как Latin-1, а потом открыть в 1251.

Грабли-2. Т.к. VB позволяет использовать необъявленные переменные, я всегда в начале кода (перед всеми процедурами) ставлю строчку Option Explicit. Эта директива запрещает интерпретатору заводить переменные самостоятельно.

Грабли-3. Глобальные переменные можно объявлять только до первой функции/процедуры. Локальные — в любом месте процедуры/функции.

Еще немного дополнительных функций, которые могут пригодится: InPos, Mid, Trim, LBound, UBound. Также ответы на все вопросы по поводу работы функций/их параметров можно получить в MSDN.

Надеюсь, что этого Вам хватит, чтобы не пугаться кода и самостоятельно написать какое-нибудь домашнее задание по информатике. По ходу поста я буду ненавязчиво знакомить Вас с новыми конструкциями.

В этой части мы уже начнём кодить нечто, что умеет работать с нашими листами в Excel. Для начала создадим отдельный лист с именем result (лист с данными назовём data). Теперь, наверное, нужно этот лист очистить от того, что на нём есть. Также мы «выделим» лист с данными, чтобы каждый раз не писать длинное обращение к массиву с листами.

Sub FormatPrice()     Sheets("result").Cells.Clear     Sheets("data").Activate End Sub

Работа с диапазонами ячеек

Вся работа в Excel VBA производится с диапазонами ячеек. Они создаются функцией Range и возвращают объект типа Range. У него есть всё необходимое для работы с данными и/или оформлением. Кстати сказать, свойство Cells листа — это тоже Range.

Примеры работы с Range

Sheets("result").Activate Dim r As Range Set r = Range("A1") r.Value = "123" Set r = Range("A3,A5") r.Font.Color = vbRed r.Value = "456" Set r = Range("A6:A7") r.Value = "=A1+A3"

Теперь давайте поймем алгоритм работы нашего кода. Итак, у каждой строчки листа data, начиная со второй, есть некоторые данные, которые нас не интересуют (ID, название и цена) и есть две вложенные группы, к которым она принадлежит (тип и производитель). Более того, эти строки отсортированы. Пока мы забудем про пропуски перед началом новой группы — так будет проще. Я предлагаю такой алгоритм:

  1. Считали группы из очередной строки.
  2. Пробегаемся по всем группам в порядке приоритета (вначале более крупные)
    1. Если текущая группа не совпадает, вызываем процедуру AddGroup(i, name), где i — номер группы (от номера текущей до максимума), name — её имя. Несколько вызовов необходимы, чтобы создать не только наш заголовок, но и всё более мелкие.
  3. После отрисовки всех необходимых заголовков делаем еще одну строку и заполняем её данными.

Для упрощения работы рекомендую определить следующие функции-сокращения:

Function GetCol(Col As IntegerAs String     GetCol = Chr(Asc("A") + Col) End Function Function GetCellS(Sheet As String, Col As Integer, Row As IntegerAs Range     Set GetCellS = Sheets(Sheet).Range(GetCol(Col) + CStr(Row)) End Function Function GetCell(Col As Integer, Row As IntegerAs Range     Set GetCell = Range(GetCol(Col) + CStr(Row)) End Function

Далее определим глобальную переменную «текущая строчка»: Dim CurRow As Integer. В начале процедуры её следует сделать равной единице. Еще нам потребуется переменная-«текущая строка в data», массив с именами групп текущей предыдущей строк. Потом можно написать цикл «пока первая ячейка в строке непуста».

Глобальные переменные

Option Explicit ' про эту строчку я уже рассказывал Dim CurRow As Integer Const GroupsCount As Integer = 2 Const DataCount As Integer = 3

FormatPrice

Sub FormatPrice()     Dim I As Integer ' строка в data     CurRow = 1     Dim Groups(1 To GroupsCount) As String     Dim PrGroups(1 To GroupsCount) As String     Sheets("data").Activate     I = 2     Do While True         If GetCell(0, I).Value = "" Then Exit Do         ' ...         I = I + 1     Loop End Sub

Теперь надо заполнить массив Groups:

На месте многоточия

Dim I2 As Integer For I2 = 1 To GroupsCount     Groups(I2) = GetCell(I2, I) Next I2 ' ... For I2 = 1 To GroupsCount ' VB не умеет копировать массивы     PrGroups(I2) = Groups(I2) Next I2 I =  I + 1

И создать заголовки:

На месте многоточия в предыдущем куске

For I2 = 1 To GroupsCount     If Groups(I2) <> PrGroups(I2) Then         Dim I3 As Integer         For I3 = I2 To GroupsCount             AddHeader I3, Groups(I3)         Next I3         Exit For     End If Next I2

Не забудем про процедуру AddHeader:

Перед FormatPrice

Sub AddHeader(Ty As Integer, Name As String)     GetCellS("result", 1, CurRow).Value = Name     CurRow = CurRow + 1 End Sub

Теперь надо перенести всякую информацию в result

For I2 = 0 To DataCount - 1     GetCellS("result", I2, CurRow).Value = GetCell(I2, I) Next I2

Подогнать столбцы по ширине и выбрать лист result для показа результата

После цикла в конце FormatPrice

Sheets("Result").Activate Columns.AutoFit

Всё. Можно любоваться первой версией.

Некрасиво, но похоже. Давайте разбираться с форматированием. Сначала изменим процедуру AddHeader:

Sub AddHeader(Ty As Integer, Name As String)     Sheets("result").Range("A" + CStr(CurRow) + ":C" + CStr(CurRow)).Merge     ' Чтобы не заводить переменную и не писать каждый раз длинный вызов     ' можно воспользоваться блоком With     With GetCellS("result", 0, CurRow)         .Value = Name         .Font.Italic = True         .Font.Name = "Cambria"         Select Case Ty         Case 1 ' Тип             .Font.Bold = True             .Font.Size = 16         Case 2 ' Производитель             .Font.Size = 12         End Select         .HorizontalAlignment = xlCenter     End With     CurRow = CurRow + 1 End Sub

Уже лучше:

Осталось только сделать границы. Тут уже нам требуется работать со всеми объединёнными ячейками, иначе бордюр будет только у одной:

Поэтому чуть-чуть меняем код с добавлением стиля границ:

Sub AddHeader(Ty As Integer, Name As String)     With Sheets("result").Range("A" + CStr(CurRow) + ":C" + CStr(CurRow))         .Merge         .Value = Name         .Font.Italic = True         .Font.Name = "Cambria"         .HorizontalAlignment = xlCenter         Select Case Ty         Case 1 ' Тип             .Font.Bold = True             .Font.Size = 16             .Borders(xlTop).Weight = xlThick         Case 2 ' Производитель             .Font.Size = 12             .Borders(xlTop).Weight = xlMedium         End Select         .Borders(xlBottom).Weight = xlMedium ' По убыванию: xlThick, xlMedium, xlThin, xlHairline     End With     CurRow = CurRow + 1 End Sub

Осталось лишь добится пропусков перед началом новой группы. Это легко:

В начале FormatPrice

Dim I As Integer ' строка в  data CurRow = 0 ' чтобы не было пропуска в самом начале Dim Groups(1 To GroupsCount) As String

В цикле расстановки заголовков

If Groups(I2) <> PrGroups(I2) Then     CurRow = CurRow + 1     Dim I3 As Integer

В точности то, что и хотели.

Надеюсь, что эта статья помогла вам немного освоится с программированием для Excel на VBA. Домашнее задание — добавить заголовки «ID, Название, Цена» в результат. Подсказка:

CurRow = 0

CurRow = 1.

Файл можно скачать тут (min.us) или тут (Dropbox). Не забудьте разрешить исполнение макросов. Если кто-нибудь подскажет человеческих файлохостинг, залью туда.

Спасибо за внимание.

Буду рад конструктивной критике в комментариях.

UPD: Перезалил пример на Dropbox и min.us.

UPD2: На самом деле, при вызове процедуры с одним параметром скобки можно поставить. Либо использовать конструкцию Call Foo(«bar», 1, 2, 3) — тут скобки нужны постоянно.

Скачать Программирование на VBA в MS Excel (2019) бесплатно:

Похожие материалы

Прикладное программирование

Эта книга излагает современные методы разработки приложений на Excel с помощью программирования на языке VBA (Visual Basic for Application). Рассмотрены не только ключевые методы и понятия программирования, но и даны программы решения прикладных задач по всем темам, представленным в данном учебном

Читать далее

Майк МакГрат.

В этой книге содержится полная пошаговая инструкция для тех, кто решил начать самостоятельное изучение языка Visual Basic. При помощи наглядных примеров и понятных разъяснений автор показывает, как, не тратя лишнего времени и сил, освоить азы программирования на Visual Basic и начать разработку

Читать далее

Разработка учетных приложений

Рассматриваются практические вопросы создания учетных приложений, подходы и инструменты разработки приложений, приводятся готовые фрагменты программного кода для автоматизации отдельных процессов.Издание предназначено для студентов, обучающихся по направлению 38. 03. 01 «Экономика», при изучении

Читать далее Раскрасить ячейки по диапазону значений после их рандомного заполнения Матрицы, функции, подпрограммы и прочее Все слова, длиной более пяти символов, начинать с прописной буквы Выяснить, какое число встречается раньше — положительное или отрицательное Ошибка «несовпадение типа» при вызове процедуры Найти значение функции Как открыть ссылку, находящуюся в ячейке листа Ексель, через send в НТТР запросе? Сделать прозрачным ряд данных на графике Excel macro Снять фильтры со всех листов в куче файлов Вычислить число π пользуясь рядом Грегори Excel (VBA). Посчитать значение функции sin(x)*cos(x) Как задать размер массива через переменную? Не обновляется usedrange листа Создание кроссворда на VBA Сколькими способами можно разложить на равные кучки 36 орехов? Спойлер в Ворде Запуск процедуры SQL Server через VBA VBA-Матрица,диагональ(главная,побочная) Удалить кавычки в строке Создание макроса Среднее арифметическое в строке с отрицательным элементом Выборка уникальных дат из строк листа «l1» и помещение их в лист «l3», Не получается. На листе «l3» вставляет MS Word(2010) Сохранить файл FSO Макрос на поиск и замены значения В listbox.multiselect отзывается лишь последний выбранный элемент слова заканчиваются на заданую букву Вывод сообщений на VBA в консольное окно Как привязать к «выделенной ячейке» закомментированный код? Нахождение двузначных чисел Поиск файла в папке Обработка части текста из ячейки ворда VBA парсинг и импорт в столбец excel Через Ексель Открыть файл ВОРД и сохранить файл под определенным именем Уровнение с экспонентой Макрос на кнопке по .OnAction VBA Access 2016. Работа с Recordset Макрос подсчета объединенных ячеек Объединить 2 макроса Что не так с кодом? Макрос выделения диапазона ячеек-объединение их в одну-переход на след.строку-повтор пред.действия Макрос который создает папку! Не работает цикл для вывода записей из Access в Excel VBA EXCEL: Собрать кучу файлов в один Subscript out of range Создание и проверка даты рождения Ускорение макроса удаления ячеек Сокрытие MediaPlayer на листе Разбиение одномерного массива на двумерный Удаление лишних символов (VBA Excel) Цвет текста примечания

  • Вы здесь:  
  • Главная image
  • Программер image
  • VBA image
  • Решения, условия, алгоритмы if, then, switch в VBA Excel
Категория: VBA
Опубликовано: 11 марта 2018

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

Содержание:

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

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

If…Then — Если То

Оператор If состоит из логического выражения, за которым следуют одно или несколько операторов. Если условие называется Истинным, выполняются утверждения в условии If (s). Если условие называется False, выполняются инструкции после цикла If.

Синтаксис

Ниже приведен синтаксис оператора If в VBScript.

If(boolean_expression) Then    Statement 1    .....    .....    Statement n End If 

Диаграмма потока

пример

Для демонстрационной цели давайте найдем самую большую из двух чисел Excel с помощью функции.

Private Sub if_demo_Click()    Dim x As Integer    Dim y As Integer         x = 234    y = 32         If x > y Then       MsgBox "X is Greater than Y"    End If End Sub 

Когда приведенный выше код выполняется, он производит следующий результат.

X is Greater than Y

Если заявление состоит из логического выражения следует один или более операторов.

if..else заявление

Оператор If состоит из логического выражения, за которым следуют одно или несколько операторов. Если условие называется Истинным, выполняются утверждения в условии If (s). Если условие называется False, выполняются утверждения в разделе Else Part.

Синтаксис

Ниже приведен синтаксис оператора If Else в VBScript.

If(boolean_expression) Then    Statement 1    .....    .....    Statement n Else    Statement 1    .....    ....    Statement n End If 

Диаграмма потока

пример

Для демонстрационной цели давайте найдем самую большую из двух чисел Excel с помощью функции.

Private Sub if_demo_Click()    Dim x As Integer    Dim y As Integer         x = 234    y = 324         If x > y Then       MsgBox "X is Greater than Y"    Else       Msgbox "Y is Greater than X"    End If End Sub 

Когда приведенный выше код выполняется, он производит следующий результат.

Y is Greater than X

Если иное утверждение состоит из логического выражения следует один или более операторов. Если условие равно True, выполняются инструкции в операторах If . Если условие ложно, выполняется Else часть скрипта.

if … elseif..else statement

Оператор If, за которым следует один или несколько инструкций ElseIf, которые состоят из булевых выражений, а затем следуют инструкции else по умолчанию, которая выполняется, когда все условие становится ложным.

Синтаксис

Ниже приведен синтаксис оператора If Elseif-Else в VBScript.

If(boolean_expression) Then    Statement 1    .....    .....    Statement n ElseIf (boolean_expression) Then    Statement 1    .....    ....    Statement n ElseIf (boolean_expression) Then    Statement 1    .....    ....    Statement n Else    Statement 1    .....    ....    Statement n End If 

Диаграмма потока

пример

Для демонстрационной цели давайте найдем самую большую из двух чисел Excel с помощью функции.

Private Sub if_demo_Click()    Dim x As Integer    Dim y As Integer         x = 234    y = 234         If x > y Then       MsgBox "X is Greater than Y"    ElseIf y > x Then       Msgbox "Y is Greater than X"    Else       Msgbox "X and Y are EQUAL"    End If End Sub 

Когда приведенный выше код выполняется, он производит следующий результат.

X and Y are EQUAL

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

вложенные операторы if

Оператор If или ElseIf внутри другого оператора If или ElseIf. Внутренние операторы If выполняются на основе внешних операторов If. Это позволяет VBScript легко справляться с сложными условиями.

Синтаксис

Ниже приведен синтаксис инструкции Nested If в VBScript.

If(boolean_expression) Then    Statement 1    .....    .....    Statement n        If(boolean_expression) Then       Statement 1       .....       .....       Statement n    ElseIf (boolean_expression) Then       Statement 1       .....       ....       Statement n    Else       Statement 1       .....       ....       Statement n    End If Else    Statement 1      Statement n End If 

пример

Для демонстрационной цели найдем тип положительного числа с помощью функции.

Private Sub nested_if_demo_Click()    Dim a As Integer    a = 23       If a > 0 Then       MsgBox "The Number is a POSITIVE Number"              If a = 1 Then          MsgBox "The Number is Neither Prime NOR Composite"       ElseIf a = 2 Then          MsgBox "The Number is the Only Even Prime Number"       ElseIf a = 3 Then          MsgBox "The Number is the Least Odd Prime Number"       Else          MsgBox "The Number is NOT 0,1,2 or 3"       End If    ElseIf a < 0 Then       MsgBox "The Number is a NEGATIVE Number"    Else       MsgBox "The Number is ZERO"    End If End Sub 

Когда приведенный выше код выполняется, он производит следующий результат.

The Number is a POSITIVE Number The Number is NOT 0,1,2 or 3

Если или ElseIf заявление внутри другого, если или ELSEIF заявление.

инструкция switch

Когда пользователь хочет выполнить группу операторов в зависимости от значения выражения, используется случай переключения. Каждое значение называется случаем, и переменная включается в зависимости от каждого случая. Оператор Case Else выполняется, если тестовое выражение не соответствует ни одному из случаев, указанным пользователем.

Case Else — необязательный оператор в Select Case, однако для хорошей практики программирования всегда есть оператор Case Else.

Синтаксис

Ниже приведен синтаксис оператора Switch в VBScript.

Select Case expression    Case expressionlist1       statement1       statement2       ....       ....       statement1n    Case expressionlist2       statement1       statement2       ....       ....    Case expressionlistn       statement1       statement2       ....       ....       Case Else       elsestatement1       elsestatement2       ....       .... End Select 

пример

Для демонстрационной цели найдем тип целого с помощью функции.

Private Sub switch_demo_Click()    Dim MyVar As Integer    MyVar = 1       Select Case MyVar       Case 1          MsgBox "The Number is the Least Composite Number"       Case 2          MsgBox "The Number is the only Even Prime Number"       Case 3          MsgBox "The Number is the Least Odd Prime Number"       Case Else          MsgBox "Unknown Number"    End Select End Sub 

Когда приведенный выше код выполняется, он производит следующий результат.

The Number is the Least Composite Number

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

 С уважением, авторы сайта Компьютерапия

Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий