Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Автоматическая запись текущей даты и времени

    Автоматическая запись текущей даты и времени в первую ячейку новой строки базы данных на листе Excel с помощью кода VBA при выборе второй ячейки этой строки.

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

    Самый простой код для записи даты

    Для автоматической записи текущей даты и времени в первую ячейку очередной записи базы данных на листе Excel, необходимо открыть редактор VBA Excel и в проводнике дважды кликнуть на листе с базой данных, чтобы открылся модуль листа, в который поместить следующую процедуру с проверкой условия, что ячейка выбрана именно во втором столбце:

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

    Добавление второго условия в процедуру

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

    Запись текущей даты с учетом трех условий

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

    Вариант для практического использования

    Если использовать предыдущую процедуру, то при выборе любой ячейки в первой строке генерируется ошибка. Она возникает из-за того, что, когда выбрана ячейка в первой строке, ячейки Cells(ActiveCell.Row — 1, 1) не существует. Чтобы избежать этой ошибки, необходимо добавить в первую группу условий проверку на то, что индекс строки выбранной ячейки не равен единице, а проверку ячейки Cells(ActiveCell.Row — 1, 1) вынести во второй блок If … End If, который будет выполняться только при выполнении условий первого блока.

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

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

    5 комментариев для “VBA Excel. Автоматическая запись текущей даты и времени”

    1. Если нужны отдельно дата и время, то вместо

      можно написать

      и

    2. Дмитрий

      Добрый день! Подскажите, пожалуйста, необходимо что бы файл сохранялся с предыдущей датой… т.е. если сегодня 12.05 то 11.05

      1. Евгений

        Добрый день, Дмитрий!
        Я с Outlook не работаю, но, по аналогии с Excel, попробуйте так:

        Напишите, если получится.

        1. Дмитрий

          Сработало, спасибо! Только начал изучение программирования (необходимо по работе). Не понимаю, почему меняется только день, а не вся дата?

          1. Евгений

            Дата в VBA — это число. Один день — это единица. Дробная часть даты — это время. Вычитая единицу, мы уменьшаем дату на один день. Попробуйте добавить к единице через точку дробную часть, вы увидите, что меняется и время.

    Обсуждение закрыто.