Найти в Дзене
VBA Excel с нуля

VBA Excel № 109. Ввод значения в следующую пустую ячейку.

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

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

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

Давайте рассмотрим пример кода, который решает эту задачу.

Скриншот с моего ноутбука
Скриншот с моего ноутбука
Чтобы сделать код более понятным, проверка данных не выполняется. Необходимо понять, что макрос представляет собой бесконечный цикл. Для выхода из цикла можно воспользоваться кнопкой "Cancel" при вводе данных.

Теперь разберем макрос более детально:

Объявление переменных:

  • СледПустСтрока - переменная для хранения номера следующей пустой строки в столбце A.
  • Данные1 и Данные2 - переменные для хранения вводимых пользователем данных (имени и фамилии).

Цикл для ввода данных:

  • Используется конструкция Do...Loop, что создает цикл (в данном случае бесконечный). Это означает, что код будет выполняться до тех пор, пока не будет принудительно прерван.

Определение следующей пустой строки в столбце A:

  • Cells(Rows.Count, 1).End(xlUp).Row + 1 находит последнюю непустую ячейку в столбце A и добавляет 1, чтобы получить номер следующей пустой строки.

Запрос данных у пользователя:

  • Данные1 = InputBox("Введите имя") запрашивает у пользователя ввод имени.
  • После ввода происходит проверка: если введенное значение пусто (или пользователь нажал "Cancel"), то выполнение кода завершается с помощью Exit Sub.

Запрос второго значения (ввод фамилии):

  • Аналогично вводу имени, запрашивается ввод фамилии. Также происходит проверка на отмену ввода.

Запись введенных данных в следующую пустую строку:

  • Cells(СледПустСтрока, 1) = Данные1 записывает введенное имя в столбец A следующей пустой строки.
  • Cells(СледПустСтрока, 2) = Данные2записывает введенную фамилию в столбец B следующей пустой строки.
Таким образом, код создает бесконечный цикл для ввода имени и фамилии в следующую пустую строку столбцов A и B, прерываясь при отмене ввода или пустом вводе.

Для понимания работы оператора определения СледПустСтрока:

Перейдите в последнюю ячейку столбца А. Нажмите клавиши <End> и <> (или <Ctrl> и <> в моём случае на ноутбуке).

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

Будет выделена последняя непустая ячейка в столбце А.

Свойство Row возвращает номер этой строки (непустой), а для получения следующей пустой строки добавляется 1 к этому номеру.

Отметим, что в случае пустого столбца (если весь столбец пуст) следующей пустой строкой будет вторая строка (строка 2). Учтите это при написании кода.

Аналогично можно найти последний пустой столбец, например, в первой строке.

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

Данный код вывел мне такое сообщение:

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