Как в VBA Excel автоматически вставить текущую дату в ячейку и защитить лист

Поділитися
Вставка
  • Опубліковано 5 жов 2024
  • Пример автоматического заполнения одной ячейки Excel (в неё автоматически вводится текущая дата) при вводе какого-то значения в другую ячейку. Плюс реализована защита ячейки от последующего изменения.
    Текстовая версия урока d-nik.site/ru/...
    Поддержать автора чашечкой кофе можна тут 👉 www.buymeacoff...

КОМЕНТАРІ • 33

  • @ExcelStore
    @ExcelStore 2 роки тому +2

    Спасибо за урок, очень ценная информация.

    • @DNikWebmaster
      @DNikWebmaster  2 роки тому +1

      Не за что. Это ответ подписчику. Но получился хороший урок по VBA.

  • @ОлександрСолопай
    @ОлександрСолопай 2 роки тому +1

    То же самое но "другими словами" (фиксируем дату внесения значения в А1):
    в модуле листа:
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" And Not IsEmpty(Target) And IsEmpty(Range("B1")) Then
    InsertDateB1
    End If
    End Sub
    в глобальном модуле:
    Public Sub InsertDateB1()
    Cells.Locked = False
    Range("B1") = Date
    Columns("B:B").EntireColumn.AutoFit
    Range("B1").Locked = True
    ActiveSheet.Protect Password:="123", DrawingObjects:=True, Contents:=True, _
    Scenarios:=True, AllowFormattingCells:=True
    End Sub
    Второй вариант - фиксируем дату внесения/изменения значения в А1:
    в модуле листа:
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" And Not IsEmpty(Target) Then
    InsertDateB1
    End If
    End Sub
    в глобальном модуле:
    Public Sub InsertDateB1()
    ActiveSheet.Unprotect "123"
    Cells.Locked = False
    Range("B1") = Date
    Columns("B:B").EntireColumn.AutoFit
    Range("B1").Locked = True
    ActiveSheet.Protect Password:="123", DrawingObjects:=True, Contents:=True, _
    Scenarios:=True, AllowFormattingCells:=True
    End Sub

  • @dimbor85
    @dimbor85 3 роки тому +4

    Благодарю. Как объяснил, то и получил))
    Под фиксированной я понимал конечно немного другое, а именно, чтобы дата не менялась на текущую при открытии документа скажем через день. Но идея с защитой тоже полезна.
    А как теперь сделать:
    1) Чтобы при повторном вводе (в другой день) в туже самую ячейку, дата обновлялась на текущую?
    2) Как применить этот макрос для таблицы? Как бы растянуть...Желательно для умной таблицы

    • @DNikWebmaster
      @DNikWebmaster  3 роки тому

      Я же вам пример написал. Простите, но за вас программу делать не буду. Включайте логику. Ведь всё и так понятно. Например, добавьте ещё условие: Если в ячейке B1 не текущая дата, то выполнять код. А по второму вопросу не совсем понял, что значит "растянуть"?

    • @dimbor85
      @dimbor85 3 роки тому

      @@DNikWebmaster Спасибо Вам большое!!!
      Понятно все человеку разбирающемуся в VBA, я таковым не являюсь)) Будет время разберусь.
      А по второму вопросу...Ну протянуть, не совсем по экселевски выразился... Треба, чтобы в столбец А вводились данные, а в столбце B в соответствующих ячейках записывались даты. Не буду же я для каждой ячейки таблицы писать макрос)) Опять же наверняка это все можно прописать в коде....Но я пока не шарю

    • @onemorelight9216
      @onemorelight9216 2 роки тому

      @@DNikWebmaster мне тоже нужно чтоб можно было растянуть. Что нада прописать ?

    • @DNikWebmaster
      @DNikWebmaster  2 роки тому

      @@onemorelight9216 Что растянуть? Куда растянуть?

    • @onemorelight9216
      @onemorelight9216 2 роки тому +2

      @@DNikWebmaster на видео показано только ячейки а1 и в1 .
      А мне нужно чтоб это работал на весь столбец А, и на столбец Б
      Может в коде нада просто написать А:А ?

  • @tree5sev
    @tree5sev Рік тому

    Спасибо за видео, но вопрос стоял про фиксированную ДАТУ, а не ячейку.

  • @vladand5718
    @vladand5718 2 роки тому

    Интересное видео. Подскажите что такое Target.Count = 1 ???

  • @user-oz9pk2ty2t
    @user-oz9pk2ty2t 2 роки тому +1

    ОТЛИЧИЕ ВИДЕОУРОК

  • @hasanhasanzada4715
    @hasanhasanzada4715 Рік тому

    Отличный урок,спасибо огромное!Подскажите пожалуйста код по такому же принципу,только с добавлением текущего времени🙏

    • @DNikWebmaster
      @DNikWebmaster  Рік тому

      Используйте функцию Date d-nik.pro/programmirovanie/programmirovanie-na-vba/27-funktsii-vba-dlya-raboty-s-datoj-i-vremenem

    • @hasanhasanzada4715
      @hasanhasanzada4715 Рік тому

      Огромное спасибо,получилось,только проблема в том что это работает только с ячейками А1 B1,как распространить эти действия на все нижеследующие ячейки?Подскажите пожалуйста

    • @DNikWebmaster
      @DNikWebmaster  Рік тому

      @@hasanhasanzada4715 Распишите пожалуйста подробно, что должно происходить и после чего. Чтобы я понимал логику вашей программы.

    • @hasanhasanzada4715
      @hasanhasanzada4715 Рік тому

      Я сканирую штрихкод товаров,а их много,и хочу чтобы к каждому товару рядом автоматически записывалось время сканирования.С этой формулой получается только для одной ячейки А1 и B1,а мне нужно,чтобы на все ячейки распространялось

    • @hasanhasanzada4715
      @hasanhasanzada4715 Рік тому

      Заранее,спасибо большое

  • @ЭльдарМенаджиев-в5у

    Как Вставить Отметку Даты В Ячейку, Если В Excel Установлен Флажок?

  • @КенБеков
    @КенБеков 3 роки тому

    Отличный урок. Но получается что любой пользователь может открыт код и посмотреть пароль и снять защиту или чего то я не понял?

    • @DNikWebmaster
      @DNikWebmaster  3 роки тому

      Получается что так.

    • @КенБеков
      @КенБеков 3 роки тому

      Спасибо за ответ, а нельзя ли пароль скрыть?

    • @DNikWebmaster
      @DNikWebmaster  3 роки тому +2

      @@КенБеков Сама по себе защита в Excel очень слабая. Но как вариант, можно запретить открывать код VBA. Можно установить ещё и пароль на открытие кода VBA. Тогда пользователь не сможет посмотреть ваш код, и соответственно не сможет увидеть пароль. Запишу сегодня видео об этом. Интересную тему вы мне подбросили.

    • @КенБеков
      @КенБеков 3 роки тому

      @@DNikWebmaster Тогда будем ждать

  • @rezhiser
    @rezhiser 2 роки тому

    а как сделать чтоб в столбце А1 автоматом ставилась дата, когда редактируют ячейки в других столбцах?

    • @DNikWebmaster
      @DNikWebmaster  2 роки тому

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

  • @ФеликсМудреный
    @ФеликсМудреный 9 місяців тому

    Help, а можете помочь, сил нет. Я согласна уже заплатить и не терять время((((

    • @DNikWebmaster
      @DNikWebmaster  9 місяців тому

      Что нужно сделать?