Достаточно часто возникает необходимость ввода данных в следующую пустую ячейку столбца или строки в 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). Учтите это при написании кода.
Аналогично можно найти последний пустой столбец, например, в первой строке.
Данный код вывел мне такое сообщение: