Разное

Самоучитель vba: Учебник VBA — CoderLessons.com

Операторы условия в VBA — ОфисГуру

Главная » Уроки MS Excel » Макросы (VBA)

Автор Антон Андронов На чтение 4 мин Опубликовано

Наиболее важные операторы условия, используемые в Excel VBA – это операторы If … Then и Select Case. Оба этих выражения проверяют одно или несколько условий и, в зависимости от результата, выполнят различные действия. Далее мы поговорим об этих двух операторах условия подробнее.

Оператор «If … Then» в Visual Basic

Оператор If … Then проверяет условие и, если оно истинно (TRUE), то выполняется заданный набор действий. Также может быть определён набор действий, которые должны быть выполнены, если условие ложно (FALSE).

Синтаксис оператора

If … Then вот такой:

If Условие1 Then
   Действия в случае, если выполняется Условие1
ElseIf Условие2 Then
   Действия в случае, если выполняется Условие2
Else
   Действия в случае, если не выполнено ни одно из Условий
End If

В этом выражении элементы ElseIf и Else оператора условия могут не использоваться, если в них нет необходимости.

Ниже приведён пример, в котором при помощи оператора If … Then цвет заливки активной ячейки изменяется в зависимости от находящегося в ней значения:

If ActiveCell.Value < 5 Then
   ActiveCell.Interior.Color = 65280  'Ячейка окрашивается в зелёный цвет
ElseIf ActiveCell.Value < 10 Then
   ActiveCell.Interior.Color = 49407  'Ячейка окрашивается в оранжевый цвет
Else
   ActiveCell.
Interior.Color = 255 'Ячейка окрашивается в красный цвет End If

Обратите внимание, что как только условие становится истинным, выполнение условного оператора прерывается. Следовательно, если значение переменной ActiveCell меньше 5, то истинным становится первое условие и ячейка окрашивается в зелёный цвет. После этого выполнение оператора If … Then прерывается и остальные условия не проверяются.

Более подробно о применении в VBA условного оператора If … Then можно узнать на сайте Microsoft Developer Network.

Оператор «Select Case» в Visual Basic

Оператор Select Case схож с оператором If … Then в том, что он также проверяет истинность условия и, в зависимости от результата, выбирает один из вариантов действий.

Синтаксис оператора Select Case вот такой:

Select Case

Выражение
Case Значение1
   Действия в случае, если результат Выражения соответствует Значению1
Case Значение2
   Действия в случае, если результат Выражения соответствует Значению2

Case Else
   Действия в случае, если результат Выражения не соответствует ни одному из перечисленных вариантов Значения
End Select

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

В следующем примере при помощи конструкции Select Case изменяется цвет заливки текущей ячейки в зависимости от находящегося в ней значения:

Select Case ActiveCell.Value
   Case Is <= 5
      ActiveCell.Interior.Color = 65280  'Ячейка окрашивается в зелёный цвет
   Case 6, 7, 8, 9
      ActiveCell.Interior.Color = 49407  'Ячейка окрашивается в оранжевый цвет
   Case 10
      ActiveCell.Interior.Color = 65535  'Ячейка окрашивается в жёлтый цвет
   Case 11 To 20
      ActiveCell.Interior.Color = 10498160  'Ячейка окрашивается в лиловый цвет
   Case Else
      ActiveCell.Interior.Color = 255  'Ячейка окрашивается в красный цвет
End Select

В приведённом выше примере показано, как можно различными способами задать значение для элемента Case в конструкции Select Case. Вот эти способы:

Case Is <= 5Таким образом при помощи ключевого слова Case Is можно проверить, удовлетворяет ли значение Выражения условию вида <=5.
Case 6, 7, 8, 9Так можно проверить, совпадает ли значение Выражения с одним из перечисленных значений. Перечисленные значения разделяются запятыми.
Case 10Так проверяется, совпадает ли значение Выражения с заданным значением.
Case 11 To 20Таким образом можно записать выражение для проверки, удовлетворяет ли значение Выражения условию вида от 11 до 20 (эквивалентно неравенству «11<=значение<=20»).
Case ElseВот так, при помощи ключевого слова Else, указываются действия для того случая, если значение Выражения не соответствует ни одному из перечисленных вариантов Case.

Как только одно из условий будет найдено, выполняются соответствующие действия и производится выход из конструкции Select Case. То есть в любом случае будет выполнена только одна из перечисленных ветвей

Case.

Более подробную информацию о работе VBA оператора Select Case можно найти на сайте Microsoft Developer Network.

Урок подготовлен для Вас командой сайта office-guru.ru
Источник: http://www.excelfunctions.net/VBA-Conditional-Statements.html
Перевел: Антон Андронов
Правила перепечатки
Еще больше уроков по Microsoft Excel

Оцените качество статьи. Нам важно ваше мнение:

Книга «Самоучитель VBA» Гарнаев А Ю

  • Книги
    • Художественная литература
    • Нехудожественная литература
    • Детская литература
    • Литература на иностранных языках
    • Путешествия. Хобби. Досуг
    • Книги по искусству
    • Биографии. Мемуары. Публицистика
    • Комиксы. Манга. Графические романы
    • Журналы
    • Печать по требованию
    • Книги с автографом
    • Книги в подарок
    • «Москва» рекомендует
    • Авторы • Серии • Издательства • Жанр

  • Электронные книги
    • Русская классика
    • Детективы
    • Экономика
    • Журналы
    • Пособия
    • История
    • Политика
    • Биографии и мемуары
    • Публицистика
  • Aудиокниги
    • Электронные аудиокниги
    • CD – диски
  • Коллекционные издания
    • Зарубежная проза и поэзия
    • Русская проза и поэзия
    • Детская литература
    • История
    • Искусство
    • Энциклопедии
    • Кулинария. Виноделие
    • Религия, теология
    • Все тематики
  • Антикварные книги
    • Детская литература
    • Собрания сочинений
    • Искусство
    • История России до 1917 года
    • Художественная литература. Зарубежная
    • Художественная литература. Русская
    • Все тематики
    • Предварительный заказ
    • Прием книг на комиссию
  • Подарки
    • Книги в подарок
    • Авторские работы
    • Бизнес-подарки
    • Литературные подарки
    • Миниатюрные издания
    • Подарки детям
    • Подарочные ручки
    • Открытки
    • Календари
    • Все тематики подарков
    • Подарочные сертификаты
    • Подарочные наборы
    • Идеи подарков
  • Канцтовары
    • Аксессуары делового человека
    • Необычная канцелярия
    • Бумажно-беловые принадлежности
    • Письменные принадлежности
    • Мелкоофисный товар
    • Для художников
  • Услуги
    • Бонусная программа
    • Подарочные сертификаты
    • Доставка по всему миру
    • Корпоративное обслуживание
    • Vip-обслуживание
    • Услуги антикварно-букинистического отдела
    • Подбор и оформление подарков
    • Изготовление эксклюзивных изданий
    • Формирование семейной библиотеки

Расширенный поиск

Гарнаев А. Ю.

Новые возможности VBA в Office 2019

Редактировать

Твиттер LinkedIn Фейсбук Электронная почта

  • Статья
  • 3 минуты на чтение

В следующих таблицах представлены новые языковые обновления Visual Basic для приложений (VBA) для Office 2019.

Office

Теперь включены значения
Имя Описание
Перечисление MsoGraphicStyleIndex (Office) Представляет предустановленные графические стили.
Перечисление MsoShapeType (Офис) mso3DModel , msoGraphic , msoLinked3DModel и msoLinkedGraphic .

Доступ

Имя Описание
Объект диаграммы (Доступ) Настраиваемая визуализация данных, которую можно включить в отчет или форму.
Объект ChartAxis (Доступ) Представляет поле, значения которого будут включены в ось категорий диаграммы.
Объект ChartSeries (доступ) Представляет ряд значений в указанной диаграмме.
Объект ChartValues ​​(доступ) Представляет поле, значения которого будут отображаться на оси значений (Y) диаграммы.
перечисление acCommand (доступ) acCmdImportAttachdBase и acCmdExportdBase теперь включены.

Excel

Имя Описание
Объект Model3DFormat (Excel) Представляет свойства формы 3D-модели.
Свойство Series.GeoMappingLevel (Excel) Задает уровень отображения географии для указанной серии в группе диаграмм. Чтение/запись XlGeoMappingLevel .
Свойство Series.GeoProjectionType (Excel) Задает тип географической проекции для указанного ряда в группе диаграмм. Чтение/запись XlGeoProjectionType .
Свойство Series.RegionLabelOptions (Excel) Задает поведение маркировки областей для указанной серии в группе диаграммы. Чтение/запись XlRegionLabelOptions .
Свойство Shape.GraphicStyle (Excel) Возвращает или задает MsoGraphicStyleIndex , представляющий стиль графики SVG. Читай пиши.
Свойство Shape.Model3D (Excel) Возвращает объект Model3DFormat , представляющий 3D-свойства объекта 3D-модели. Только для чтения.
Свойство ShapeRange.GraphicStyle (Excel) Возвращает или задает MsoGraphicStyleIndex , представляющий стиль диапазона фигур, содержащего одну или несколько графических объектов SVG. Читай пиши.
Свойство ShapeRange.Model3D (Excel) Возвращает объект Model3DFormat , представляющий 3D-свойства объекта 3D-модели. Только для чтения.
Метод Shapes.Add3DModel (Excel) Создает 3D-модель из существующего файла. Возвращает объект Shape , представляющий новую 3D-модель.
Перечисление Excel.XlGeoMappingLevel (Excel) Константы, передаваемые и возвращаемые свойством Series. GeoMappingLevel .
Перечисление Excel.XlGeoProjectionType (Excel) Константы переданы и возвращены Свойство Series.GeoProjectionType .
Перечисление Excel.XlRegionLabelOptions (Excel) Константы, передаваемые и возвращаемые свойством Series.RegionLabelOptions .

PowerPoint

Имя Описание
Объект Model3DFormat (PowerPoint) Представляет свойства формы 3D-модели.
Свойство Presentation.AutoSaveOn (PowerPoint) True , если изменения в презентации сохраняются автоматически. Чтение/запись Логическое значение .
Shape.Decorative Property (PowerPoint) Устанавливает или возвращает декоративный флаг для указанного объекта. Читай пиши.
Свойство Shape.GraphicStyle (PowerPoint) Возвращает или задает MsoGraphicStyleIndex , представляющий стиль графики SVG. Читай пиши.
Свойство Shape.Model3D (PowerPoint) Возвращает объект Model3DFormat , представляющий 3D-свойства объекта 3D-модели. Только для чтения.
ShapeRange.Decorative property (PowerPoint) Устанавливает или возвращает декоративный флаг для указанного объекта. Читай пиши.
Свойство ShapeRange.GraphicStyle (PowerPoint) Возвращает или задает MsoGraphicStyleIndex , представляющий стиль диапазона фигур, содержащего одну или несколько графических объектов SVG. Читай пиши.
Свойство ShapeRange.Model3D (PowerPoint) Возвращает объект Model3DFormat , представляющий 3D-свойства объекта 3D-модели. Только для чтения.
Метод Shapes.Add3DModel (PowerPoint) Создает Model3DFormat объект из существующего файла. Возвращает объект Shape , представляющий новую 3D-модель.

Visio

Имя Описание
Свойство Shape.AlternativeText (Visio) Возвращает или задает альтернативное текстовое описание, связанное с объектом. Читай пиши.
Свойство Shape.Title (Visio) Возвращает или задает альтернативный текст, связанный с объектом. Читай пиши.

Слово

Имя Описание
Объект Model3DFormat (Word) Представляет свойства формы 3D-модели.
Свойство Shape. GraphicStyle (Word) Возвращает или задает MsoGraphicStyleIndex , представляющий стиль графики SVG. Читай пиши.
Свойство Shape.Model3D (Word) Возвращает объект Model3DFormat , представляющий 3D-свойства объекта 3D-модели. Только для чтения.
Свойство ShapeRange.GraphicStyle (Word) Возвращает или задает MsoGraphicStyleIndex , представляющий стиль диапазона фигур, содержащего одну или несколько графических объектов SVG. Читай пиши.
Свойство ShapeRange.Model3D (Word) Возвращает объект Model3DFormat , представляющий 3D-свойства объекта 3D-модели. Только для чтения.
Метод Shapes.Add3DModel (Word) Добавляет 3D-модель на холст для рисования. Возвращает объект Shape , представляющий трехмерную модель, и добавляет его в коллекцию CanvasShapes .
Перечисление WdInlineShapeType (Word) wdInlineShape3DModel и значения wdInlineShapeLinked3DModel теперь включены.

См. также

  • Ссылка на библиотеку VBA

Поддержка и отзывы

У вас есть вопросы или отзывы об Office VBA или этой документации? См. раздел Поддержка и отзывы Office VBA, чтобы узнать, как вы можете получить поддержку и оставить отзыв.

Влияние автосохранения на надстройки и макросы

  • Статья
  • 7 минут на чтение

Узнайте, как работает автосохранение в Excel, PowerPoint и Word и как оно может повлиять на надстройки или макросы.

Обзор автосохранения

Когда файл размещается в облаке (т. е. OneDrive, OneDrive для бизнеса или SharePoint Online), автосохранение позволяет автоматически и непрерывно сохранять изменения, внесенные пользователем. Когда файл предоставляется другим пользователям, их изменения объединяются с версией файла этого пользователя. Если автосохранение отключено, сохранение необходимо запускать вручную, чтобы изменения пользователя сохранялись в облаке и чтобы этот пользователь мог получать изменения других пользователей.

В настоящее время Excel, Word и PowerPoint предоставляют событие BeforeSave , которое позволяет разработчику выполнять код после того, как пользователь запускает сохранение, но до того, как оно произойдет. Excel также предоставляет событие AfterSave , которое может выполнять код макроса или надстройки после завершения сохранения.

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

Как правило, этих проблем можно избежать, если пользователь отключит автосохранение. Вы можете сделать это от имени пользователя, используя свойство AutoSaveOn в Word, Excel и PowerPoint, если оно доступно (см. следующий пример). Вы также можете предпринять шаги в качестве разработчика, чтобы смягчить эти проблемы, чтобы ваши надстройки и макросы работали бесперебойно, даже если включено автосохранение.

Пример

Этот пример отключает автосохранение и уведомляет пользователя о том, что книга не сохраняется автоматически.

 Sub UseAutoSaveOn()
    ActiveWorkbook.AutoSaveOn = Ложь
    MsgBox "Эта книга сохраняется автоматически: " & ActiveWorkbook.AutoSaveOn
Конец сабвуфера
 

Потенциальные проблемы с событиями сохранения и автосохранением

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

  1. Код в Перед сохранением или После сохранения события выполняются слишком долго
  2. Код в событиях сохранения вызывает модальное диалоговое окно
  3. Код в событиях сохранения очищает стек отмены (только Excel)
  4. Код в AfterSave загрязняет книгу (только Excel)
  5. Код в BeforeSave отменяет сохранение файла (устанавливая для аргумента Cancel значение True)

Проблема 1: Код в событиях BeforeSave или AfterSave выполняется слишком долго

В целом Word, Excel и PowerPoint не реагируют на действия пользователя во время выполнения кода надстройки или макроса. Поэтому, если ваш код в BeforeSave или AfterSave обработчик событий выполняется слишком долго, это может значительно ухудшить работу пользователя.

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

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

Пример сценария

Представьте себе надстройку, которая позволяет пользователю создавать пользовательские карты на основе данных в книге Excel. Такая надстройка может иметь код BeforeSave , который сериализует любые карты, созданные пользователем, и сохраняет их в рабочей книге в части CustomXML. Этот процесс может занять секунду, и Excel может не отвечать, пока это происходит.

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

Когда автосохранение включено, этот код BeforeSave запускается автоматически на периодической основе, даже если пользователь занят чем-то другим (например, вводом данных в ячейку), что может сильно раздражать.

Обходной путь

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

Проблема 2: Код в событиях сохранения вызывает модальное диалоговое окно

Любой код, который выполняется в событии сохранения, отображающем пользовательский интерфейс, такой как модальное диалоговое окно, может серьезно ухудшить работу пользователя при включенном автосохранении. Поскольку события BeforeSave и AfterSave запускаются автоматически на периодической основе, эти диалоговые окна могут прерывать обычный рабочий процесс пользователя.

Пример сценария

Надстройка, которая проверяет документ Word перед сохранением, чтобы убедиться, что применяется фирменная символика компании, может вызвать диалоговое окно, предупреждающее пользователя о любых обнаруженных проблемах и предлагающее способ их устранения. Потому что Событие BeforeSave теперь запускается автоматически и постоянно, это диалоговое окно проверки может появиться внезапно, когда пользователь делает что-то еще.

Обходные пути

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

Если вы хотите, чтобы код проверки запускался только при первом сохранении из нового документа, но не при последующих автосохранениях, рассмотрите возможность проверки свойства, такого как Excel Workbook.Path перед отображением любого пользовательского интерфейса во время BeforeSave или AfterSave . В Excel свойство Workbook.Path должно быть пустым, если в книге еще нет места для сохранения.

Проблема 3: Код в событиях сохранения очищает стек отмены (только для Excel)

В общем случае при выполнении определенных инструкций VBA в Excel стек отмены будет очищен. Например, если вы измените значение ячейки, запустив ActiveCell.Value = "myValue" , стек отмены очищается. Если такой код присутствует в событии BeforeSave или AfterSave для макроса или надстройки, а автосохранение включено, пользователь этого макроса или надстройки часто не сможет отменить обычные действия пользователя, как ожидалось.

Пример сценария

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

Обходной путь

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

Выпуск 4: код в

AfterSave загрязняет книгу (только Excel)

Когда функция автосохранения включена, события BeforeSave и AfterSave срабатывают только в том случае, если в книге произошли изменения с момента последнего их изменения. были запущены. Если код в Событие AfterSave загрязняет книгу (т. е. вносит дополнительные изменения), что потенциально может привести к повторному запуску событий для того же изменения, а затем поставить события в очередь для повторного запуска на неопределенный срок. Это может привести к пустой трате системных ресурсов и повлиять на срок службы батареи.

Обходной путь

Код, который загрязняет книгу в AfterSave , следует переместить в BeforeSave или вообще в другое место (см. проблему 3). Сегодня это не очень хорошая практика, даже без автосохранения, потому что она оставляет книгу в постоянном «грязном» состоянии, из-за чего при закрытии появляется подсказка, предлагающая пользователю сохранить свои изменения, даже если они не внесли никаких дополнительных изменений.

Проблема 5: Код в

BeforeSave отменяет сохранение файла (путем установки для аргумента Cancel значения True)

Сегодня можно отменить сохранение в событии BeforeSave , установив для Cancel значение True:

 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Отмена = Истина
Конец сабвуфера
 

Когда автосохранение включено, приложение (т. е. Excel, Word или PowerPoint) запускает непрерывное автоматическое сохранение до тех пор, пока в файле не останется несохраненных изменений. После того как пользователь внесет одно изменение в файл, приложение попытается сохранить его.

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

Пример сценария

Надстройка может полностью переопределить код сохранения Word по умолчанию, чтобы файл сохранялся в корпоративной базе данных, а не на диске или в расположении SharePoint. Такая надстройка сначала отменит попытку сохранения, прежде чем пытаться сохранить ее в другом месте.

Обходной путь

Такие надстройки должны обеспечивать отключение автосохранения путем установки для параметра AutoSaveOn значения False.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *