Найти тему
1,4K подписчиков

VBA Excel № 108.2 Запрос значения ячейки (часть 2).

Скриншот с моего ноутбука
Скриншот с моего ноутбука

Доброго времени суток, уважаемые читатели! Давайте продолжим начатое в статье 108.1.

Как мы можем знать во многих сценариях важно проверять правильность введенных пользователем данных. Рассмотрим более подробно третью версию программы (первые две, рассмотрены в статье 108.1), в которую добавлена проверка на ввод числовых данных в диапазоне от 1 до 7. Если пользователь вводит некорректные данные или нажимает Cancel "Отмена", то программа продолжает запрашивать значение до тех пор, пока не будет введено корректное значение или не будет нажата кнопка Cancel "Отмена". Итак:

Скриншот с моего ноутбука
Скриншот с моего ноутбука

И давайте разберем код по порядку (и да, макрос я назначил на кнопку):

  • Sub ПолучитьДанные_3(): Это объявление подпрограммы (процедуры) с именем "ПолучитьДанные_3". Ключевое слово "Sub" используется для определения процедур.
  • Dim ВашеЗначение As Variant: Создает переменную с именем "ВашеЗначение" и указывает, что ее тип данных - "Variant" (переменная, которая может содержать данные разных типов).
  • Dim Сообщение As String: Точно так же создает переменную, но теперь с именем "Сообщение" и типом данных "String" (строковая переменная).
  • Const МинЗнач As Integer = 1: Определяет константу "МинЗнач" с типом данных "Integer" и присваивает ей значение 1. Константы предназначены для хранения постоянных значений, которые не изменяются в течение выполнения программы.
  • Const МаксЗнач As Integer = 7: То же самое для константы "МаксЗнач" со значением 7.
  • Сообщение = "Введите значение между " & МинЗнач & " и " & МаксЗнач: Формирует строку "Сообщение", содержащую текст для ввода, включающий значения констант "МинЗнач" и "МаксЗнач". Оператор "&" (конкатенации)
  • используется для объединения строк и переменных.
  • Do: Начало блока "Do...Loop", который представляет собой цикл. Выполняет инструкции внутри блока до тех пор, пока условие в "Loop" не будет выполнено.
  • ВашеЗначение = InputBox(Сообщение): Отображает окно ввода данных с текстом "Сообщение" и присваивает введенное значение переменной "ВашеЗначение".
Скриншот с моего ноутбука
Скриншот с моего ноутбука
  • If ВашеЗначение = "" Then Exit Sub: Проверяет, была ли нажата кнопка "Отмена" в окне ввода данных. Если пользователь отменил ввод (ввел пустое значение), процедура завершает свое выполнение с помощью "Exit Sub".
  • If IsNumeric(ВашеЗначение) Then: Проверяет, является ли введенное значение числом.
  • If ВашеЗначение >= МинЗнач And ВашеЗначение <= МаксЗнач Then Exit Do: Проверяет, находится ли введенное числовое значение в пределах между "МинЗнач" и "МаксЗнач". Если условие выполняется, выходит из цикла "Do...Loop".
  • Сообщение = "Ранее введенное значение было НЕКОРРЕКТНЫМ.": Если введенное значение не соответствует условиям, формирует новое сообщение об ошибке.
  • Сообщение = Сообщение & vbNewLine & "Введите значение между " & МинЗнач & " и " & МаксЗнач: Обновляет сообщение, добавляя новую строку и текст для ввода значений в заданном диапазоне.
Скриншот с моего ноутбука
Скриншот с моего ноутбука

Loop: Переходит к началу цикла "Do...Loop". Если пользователь ввел некорректное значение или нажал "Отмена", цикл повторяется.

ActiveSheet.Range("F1").Value = ВашеЗначение: После успешного ввода корректного значения, устанавливает значение ячейки F1 активного листа равным введенному значению.

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