Автоматическая вставка текущей даты в ячейку при вводе данных

Предположим, у нас имеется таблица заказов, куда пользователь вводит номер заказа, имя клиента, сумму и т.д. Необходимо сделать так, чтобы при внесении номера заказа в столбец А - в столбце B напротив введенного заказа автоматически появлялись дата и время его занесения:

date_auto_enter3.png

Чтобы реализовать такой ввод даты, нам потребуется простой макрос, который надо добавить в модуль рабочего листа. Для этого щелкните правой кнопкой мыши по ярлычку листа с таблицей и выберите в контекстном меню команду Исходный текст (View code).

В открывшееся окно редактора Visual Basic скопируйте этот текст этого макроса:

Private Sub Worksheet_Change(ByVal Target As Range)
    
    For Each cell In Target   'проходим по всем измененным ячейкам
       If Not Intersect(cell, Range("A2:A100")) Is Nothing Then  'если изменененная ячейка попадает в диапазон A2:A100
            With cell.Offset(0, 1)         'вводим в соседнюю справа ячейку дату
               .Value = Now
               .EntireColumn.AutoFit  'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
            End With
       End If
    Next cell
End Sub

При необходимости измените "чувствительный" диапазон "А2:А100" на свой собственный. Если необходимо вставлять дату не в соседний столбец, а правее - подставьте в оператор Offset(0,1) вместо 1 число побольше.

Закройте редактор Visual Basic и попробуйте ввести что-нибудь в диапазон А2:А100. В соседней ячейке тут же появится текущая дата-время!

Ссылки по теме

 


Страницы: 1  2  3  4  5  
СердЖиГ
06.10.2012 16:53:48
Макрос очень полезный, особенно когда нужно проконтролировать дату/время внесения информации. Правда обнаружил, что дата вставляется при любом изменении в ячейке, в том числе и при Delete. Возможно ли это как-то исправить?
СердЖиГ
06.10.2012 16:54:49
Можно так:
If IsEmpty(Target) Then
     Target(1, 2) = Empty
Else
     With Target(1, 2)
        .Value = Now
        .EntireColumn.AutoFit
     End With
End If
27.12.2013 10:04:50
Добрый день.
А куда именно в макросе приведенном выше нужно вставить Ваш код, чтобы он работал?
Спасибо.
28.12.2013 11:06:29
Александр, вставьте вместо 5,6,7 строчек.
17.06.2014 17:15:33
Николай, никак не получилось данным методом:(
Не могли бы Вы, для не особо одаренных, подсказать что поменять, чтобы при удалении ячейки из диапазона A2:A100 не выводилась дата в соседней ячейке. Просто время от времени нужно чистить таблицу...
10.07.2014 10:47:37
Добрый день, Николай. Подскажите, как в этом макросе:

Private Sub Worksheet_Change(ByVal Target As Range)
   
   For Each cell In Target   'проходим по всем измененным ячейкам
If Not Intersect(cell, Range("A2:A100")) Is Nothing Then  'если изменененная ячейка попадает в диапазон A2:A100
With cell.Offset(0, 1)   'вводим в соседнюю справа ячейку дату
  .Value = Now
  .EntireColumn.AutoFit  'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
End With
End If
   Next cell
End Sub


переписать для 2 или нескольких разных столбцов
27.11.2016 18:50:51
Добрый день.
А куда именно в макросе приведенном выше нужно вставить Ваш код, чтобы он работал?
Спасибо.
ДЕЙСТВИТЕЛЬНО НЕ ПОНЯТНО. я уже раз 100 пробовал

Private Sub Worksheet_Change(ByVal Target As Range)
     
    For Each cell In Target   'ïðîõîäèì ïî âñåì èçìåíåííûì ÿ÷åéêàì
       If Not Intersect(cell, Range("c2:c100")) Is Nothing Then  'åñëè èçìåíåíåííàÿ ÿ÷åéêà ïîïàäàåò â äèàïàçîí A2:A100
            With cell.Offset(0, -1)        'ââîäèì â ñîñåäíþþ ñïðàâà ÿ÷åéêó äàòó
               If IsEmpty(Target) Then
     Target(0, -1) = Empty
Else
     With Target(0, -1)
        .Value = Now
        .EntireColumn.AutoFit
     End With
End If
       End If
    Next cell
End Sub
19.02.2014 09:53:25
Почему при удалении строки появляется дата?
27.11.2016 18:52:45
вы решили вопрос с датой, чтоб при удалении не появлялась дата. если да сбросьте код пожалуйста
06.11.2018 00:11:37
Напишу, как у меня получилось.



Private Sub Worksheet_Change(ByVal Target As Range)
    
    For Each cell In Target   'проходим по всем измененным ячейкам
       If Not Intersect(cell, Range("A3:A1000")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A1000
        If IsEmpty(Target) Then 'проверяем на удаление информации
            Target(1, 3) = Empty 'усли пусто - тогда очистить дату
            Else ' иначе
                With Target(1, 3) 'в ячейку с указанным смещением
                .Value = Date 'ввести дату
                .EntireColumn.AutoFit
                End With
            End If
       End If
    Next cell 'к следующей ячейке
End Sub
22.05.2019 14:39:45
Спасибо!
Данное решение мне помогло.
И плюс дополнительное изменение из комментария Николая Павлова - Сейчас на Дату.
Спасибо!
27.11.2016 16:09:03
Действительно не понятно куда вставлять этот код, чтоб при удалении он не заполнял даты опять. Можете если не сложно написать полный код, с условием что он не будет вставлять дату при удалении данных
Alfarg
06.10.2012 17:06:04
Как сделать чтобы не вставлялось текущее время тоесть всегда только дата
Заранее благодарен
06.10.2012 17:38:41
Замените Now на Date
03.10.2013 19:04:17
А еще можно просто формат ячеек-число-дата. И в ячейке будет показываться только дата)
Роман
06.10.2012 17:07:57
День добрый! макрос класс!, но почему то после закрытия книги и сохранения, при новом заходе макрос перестает работать.
06.10.2012 17:40:42
Проверьте, не включена ли у вас защита от макросов. В Excel 2003 и старше - Сервис - Макрос - Безопасность - Низкий. В Excel 2007 и новее - Файл - Параметры - Центр управления безопасностью - Макросы
Роки Санта Круз
06.10.2012 17:09:35
Добрый день! Спасибо огромное, лучшего сайта по Эксель не видел!
korsar34
06.10.2012 17:13:08
у меня вопрос:
как отредактировать макрос таким образом, чтобы дата ставилась только в одну конкретную ячейку?
т.е. смысл в чём:
есть табличка, люди туда заносят данные (причём под данными должно подразумеваться в том числе простое изменение цвета самой ячейки а она может просто быть пустая), и при закрытии таблицы либо при её сохранении в определённое место должна вноситься дата последнего изминения данной таблицы..
22.02.2013 12:24:07
Подскажите, пожалуйста, как сделать так чтобы дата изменений в диапазоне А2:N1000 вставлялись в соответствующую строку колонки O? Спасибо!
23.02.2013 12:51:36
Можно вот так:
Private Sub Worksheet_Change(ByVal Target As Range)   
    For Each cell in Target   'проходим по всем измененным ячейкам
       If Not Intersect(cell, Range("A2:N1000")) Is Nothing Then  
            With Range("O" & cell.row)
               .Value = Now
               .EntireColumn.AutoFit  
            End With
       End If
    Next cell
End Sub
25.02.2013 13:04:00
Спасибо огромное, очень помогли :)
Замечательный сайт!
23.02.2013 19:16:14
Доброго времени суток! Благодарю Вас за прекрасный сайт!!!! Очень помог мне во многом :). Подскажите, пожалуйста, когда я копирую Ваш текст в редактор Visual Basic, нужно ли потом как то сохранить чтобы заработало? И у меня почему то выделяет слово Sub красным цветом и макрос не работает.
28.02.2013 10:00:52
Ничего специально сохранять не нужно. Возможно, при копировании что-то потерялось. Лучше скачайте мой пример в заголовке и посмотрите код там.
05.03.2013 15:21:53
Хотела использовать этот макрос, но возникла проблема - фильтрую данные протягиваю нужное значение в столбце А - дата меняется в столбце B не только в отфильтрованных данных, но и в скрытых. Можно ли изменить макрос так, чтобы он корректно работал в случае с использованием фильтров.
а как сделать что бы дата вводилась не в правую а в левую сторону?
22.03.2013 20:24:17
Написать -1 вместо 1 в операторе Offset(0, 1)
24.03.2013 10:06:21
Николай,здравствуйте! Огромное Вам спасибо за вашу работу и Ваш классный сайт, мне очень помогает в работе.
И вот работая над данной темой у себя в программе возник вопрос, не подскажите что нужно сделать чтоб работал макрос. В столбце A работает формула в таблице

=ЕСЛИОШИБКА(ВПР(ВПР(СТРОКА(A1);Таблица8;12;0);$E$2:$F$18;2;0);"")
 
,но она срабатывает только после выполнения функции ВПР, а я в соседнюю ячейку, т.е. в столбец В определила вставку с помощью данного макроса дату, но макрос срабатывает только в том случае если ввод в ячейку происходит в ручную, а не с помощью данной формулы. Пожалуйста подскажите почему не работает макрос самостоятельно. Ведь ячейка изменяет свое содержимое, а макрос молчит?
26.03.2013 22:13:13
Очень классная вещь, а как сделать чтоб ещё для одного диапазона выдавало дату и время? Очень нужно чтоб была дата начала ввода и дата окончания в одной строке.
30.03.2013 23:42:15
привет  всем очень интересует эта тема, есть пару вопросов по ней
1) после изменения кода, а именно меняю строку "О" на "С" , и при дальнейшее работе (вводе данных в столбец "А" перед тем как появится дата и время  весь лист дребежит как бы с пол секунды - почему то до смену столбца такого не было.
2) как добавить в макрос  помимо даты и времени  логин заполняющего ячейку , ссмысл в том что файл лежит на серваке, и доступный по локальной сети - и на нем меняет кто что хочет и когда захочет  
11.04.2013 07:59:46
1. Возможно, это работает пересчет формул, если у вас тяжелый файл. А что такое "О" на "С"?
2. Добавить в код после 8-й строки
cell.Offset(0,2)=Application.UserName
 
18.01.2014 13:35:38
Павел, при вставке cell.Offset(0,2)=Application.UserName  неправильно срабатывает макрос.при изменении какой либо одной ячейки,имя пользователя прописывается сразу много раз,в строчку,через 1 ячейку.
02.04.2013 08:41:45
Подскажите, пожалуйста, как можно сделать тоже самое, но только в LibreOffice Calc? в Excel получается легко, а в Libre - не могу сообразить...
02.04.2013 09:48:08
Никак. В Libre Office нет макросов на VBA.
02.04.2013 10:32:03
а может есть возможность другим способом сделать автоматический ввод времени? :oops:
11.04.2013 07:55:20
В Libre Office? Думаю, есть - там же есть встроенный JavaScript вместо VBA для аналога макросов.
06.04.2013 12:22:01
Николай, добрый день.
Пытаюсь запустить Ваш макрос, но выдает ошибку. А можно как-то связаться с Вами, чтобы выяснить в чем проблема? Если есть возможность, напишите мне в скайп. Спасибо!
11.04.2013 07:53:01
В скайпе я редко доступен. Лучше сюда или в почту. Мой макрос в скаченном примере выдает ошибку? Или ваш макрос написанный по мотивам моего? ;)
15.04.2013 17:27:59
Подскажите, пожалуйста, а как подправить чтобы, если определенная ячейка (A2, например) пустая в нее вставлялась текущая дата, и при необходимости ее можно было поправить на другую?
При очистке ячейки - вновь по умолчанию текущая дата
16.04.2013 18:32:50
Здравствуйте!
Реально помогли с этим макросом!
огромное спасибо и дай вам бог здоровья и шо бы у вас руки не болели!!!
подскажите пожалуйста у меня в этом макросе большой диапазон, и когда изменяешь данные в одной ячейке то комп начинает искать где сделали изменение и куда вставить значение. На это к сожалению уходит много времени.
И так внимание вопрос. Как сделать что бы этот макрос выполнялся только перед сохранением данной книги или перед ее закрытием?
Заранее благодарю!
17.04.2013 23:55:04
Чтобы не тормозило, можно просто отключить автоматический пересчет книги на время выполнения макроса, т.е. добавить Application.Calculation=xlManual между 5-й и 6-й строчками и Application.Calculation=xlAutomatic между 7-й и 8-й.
18.04.2013 10:51:24
Спасибо!
Забыл написать я ее уже стер и все нормально заработало!

Еще раз спасибо!
25.04.2013 20:16:54
Добрый вечер!
Воспользовалась приведенным Вами макросом отлично работает, спасибо!
Но столкнулась со следующей проблемой, у меня файл разделен на 2 части, первая доступна для редактирования одним людям, вторая часть - другим, не знаю, как это правильно называется делала с помощью функции "Allow Users to Edit Ranges", данная функция работает только при защите листа, но при включенной защите не работают макросы... можно ли как-то дополнить макрос, чтобы обойти защиту?
Заранее огромное спасибо!
01.05.2013 01:04:53
Да, конечно - можно временно отключать защиту перед внесением даты и потом включать обратно. Т.е. перед 6-й строкой написать
Activesheet.Unprotect Password:="123"

а после 7-й:
Activesheet.Protect Password:="123"
28.11.2015 17:52:05
увы, не работает
04.05.2013 14:26:01
Добрый день.
Спасибо за ваш сайт много у вас научился.
Но вот столкнулся с проблемой, ввел ваш макрос в свои таблицы, все было прекрасно, да тех пор пока я не растянул таблицу и тут вся таблица перевелась на сегодняшнюю дату.
Как сделать, что б этого не происходило.
За ранее спасибо.
Вот мой макрос.
Private Sub Worksheet_Change(ByVal Target As Range)
    For Each cell In Target   'проходим по всем измененным ячейкам
    If Not Intersect(cell, Range("B4:I120";)) Is Nothing Then
      With Range("A" & cell.Row)
         .Value = Date
         .EntireColumn.AutoFit
      End With
    End If
    Next cell
End Sub
07.05.2013 22:50:53
Что вы понимаете под фразой "растянул таблицу"? Если перетаскивание за правый нижний угол для изменения размера, то макрос будет считать измененными все ячейки в столбце - и обновит дату на текущую.
07.05.2013 15:25:42
Добрый день, Николай Павлов.
Спасибо за макрос.:)
Меня волнует один вопрос: Как сделать так, чтобы только при вводе слова "Исправлено" в ячейку - А3,  диапазона A2:A100 выводилась текущая дата и время в соседнюю ячейку - В3.
07.05.2013 22:54:00
Можно добавить условие на проверку вхождения слова "Исправлено" в изменяемой ячейке в 4-й строке макроса:

If Not Intersect(cell, Range("A2:A100")) Is Nothing And cell Like "Исправлено*" Then   
08.05.2013 07:49:38
Спасибо.
Теперь заработало.
А можно еще сделать так чтобы после удаления информации из ячейки в диапазоне А2:А100, появившийся текущая дата в соседней ячейке обратно удалилась.
08.05.2013 01:47:58
Доброго время суток.

Я имел в виду, что когда я за край таблицы тяну вниз для увеличения ячеек в таблице.

11.05.2013 11:47:58
а как сделать чтобы этот макрос реагировал не только на ручной ввод в строчку, но и на вставку из буфера, т.е. сценарий - человек вводит повторяющееся значение, и чтобы не вводить его N раз, копирует его, выделяет N строк, нажимает ctrl+v, в результате дата только в первой строчке.
26.05.2013 19:56:00
Private Sub Worksheet_Change(ByVal Target As Range)
У меня уже это есть на нужной странице. Выдает ошибку. Как можно сделать?
26.05.2013 21:28:22
Видимо у вас уже есть макрос обработки события изменения листа. Тогда вставьте код моего макроса (со 2-й до предпоследней строчки) между Private Sub и End Sub. Например, сразу перед End Sub.
27.05.2013 10:34:49
Здравствуйте, Николай
Макрос конечно уже есть и я пробовал вставлять как вы и говорили. Я про это знаю. Однако все равно пишет ошибку компиляции, подсвечивает "cell", сообщение : "Variable not defined"
Может прежний макрос неверно написан? хотя он работает как надо.
31.05.2013 20:34:27
А у вас в заголовке модуля оператор Option Explicit не прописан, часом?
31.05.2013 18:08:42
Добрый день, Николай. Спасибо Вам за макрос. Хочу спросить, как переделать этот макрос, чтобы он не менял дату если в ячейке уже есть другая дата? То есть у меня таблица учета звонков, когда оператор принимает звонок - он вносит информацию в ячейку C1, рядом в B1 отображается время и дата. Потом оператор хочет уточнить, изменить внесенную информацию и соответственно дата тоже меняется. Нужно как то запретить макросу работать в не пустых ячейках, либо сделать так, чтобы он реагировал только на не пустые ячейки. Как это сделать?
31.05.2013 20:56:03
См. первый комментарий.
31.05.2013 21:13:04
А можно расписать полностью как для тупых?)
31.05.2013 21:35:54
Private Sub Worksheet_Change(ByVal Target As Range)
        For Each cell in Target
         If Not Intersect(cell, Range("A2:A100")) Is Nothing And _
                                       Target.Offset(0,1)="" Then
                With Target.Offset(0, 1)
                    .Value = Now
                    .EntireColumn.AutoFit
                End With
       End If
    Next cell
End Sub
31.05.2013 22:00:23
Спасибо!
22.11.2013 14:54:43
У Добрый день!
У меня глупого, по чему-то программа выдает ошибку(закрашивается красным цветом) в строке .Value=Now
Как это исправить, подскажите, пожалуйста?
28.12.2013 11:04:42
Не видя вашего кода помочь нереально. Покажите код.
19.03.2014 03:43:06
Та же самая проблема, ввожу код

Private Sub Worksheet_Change(ByVal Target As Range)
        For Each cell in Target
         If Not Intersect(cell, Range("A2:A100")) Is Nothing And _
                                       Target.Offset(0,1)="" Then
                With Target.Offset(0, 1)
                    .Value = Now
                    .EntireColumn.AutoFit
                End With
       End If
    Next cell
End Sub
 

.Value = Now сразу подсвечивается красным. Несмотря на это всё равно закрываю окно с кодом, выходит предупреждающее  сообщение о баге. Ввожу в столбец А значение и выбрасывает обратно на код, где желтым выделено
Private Sub Worksheet_Change(ByVal Target As Range)
Николай помогите :)
Если для помощи нужно предоставить дополнительный код ошибки или что то в этом роде, скажите от куда его выдернуть :)
08.05.2014 16:57:10
У вас там между точкой и словом Value какой-то непечатаемый символ. Скопируйте в Word, посмотрите сами.
05.07.2015 08:57:49
Николай! непечатаемый символ у вас в коде который вы приводите. При копировании он переносится в наши книги)))


https://yadi.sk/i/ACRcPVzqhfsva


Интересно, что это за символ?  
03.04.2018 07:21:09
Сам долго ломал голову. в итоге такой код получился

 Private Sub Worksheet_Change(ByVal Target As Range)
        For Each cell In Target
         If Not Intersect(cell, Range("B2:B100")) Is Nothing And _
                                       Target.Offset(0, -1) = "" Then
                With Target.Offset(0, -1)
                    .Value = Now
                    .EntireColumn.AutoFit
                End With
       End If
    Next cell
End Sub
05.06.2013 12:50:24
А мне не хотелось добавлять лишний столбец с датой внесения изменений в таблицу, поэтому решил делать через проверку данных. Книга у меня используется многими пользователями на разных компьютерах, поэтому вставил туда еще и наименование компьютера, системное имя пользователя и т.п.

Вот функция:

Function iVal(iOper As String) 
' iOper - в моем случае ФИО сотрудника (может быть любое текстовое значение)
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _
        :=xlBetween
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = "Данные изменил:"
        .ErrorTitle = ""
        .InputMessage = "ФИО: " & iOper & Chr(10) & "Время: " & Time & Chr(10) & "Дата: " _
            & Date & Chr(10) & "Компьютер: " & Environ("COMPUTERNAME") & Chr(10) & "Пользователь: " _ 
      & Environ("USERNAME")
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = False
    End With
End Function
 
05.06.2013 16:42:18
Спасибо за актуальный макрос! Есть пара вопросов.  
Можно ли сделать так, чтобы после удаления информации из ячейки, текущая дата в соседней ячейке обратно удалилась.
И можно ли фиксировать только изменения текстового содержимого ячейки, а не изменение формата ячейки по образцу? А то, если ячейка была заполнена, а я ее просто форматирую по образцу, дата изменений меняется на текущую.
Мой вариант:
Private Sub Worksheet_Change(ByVal Target As Range)
For Each Cell In Target
If Not Intersect(Cell, Range("E2:E65536";)) Is Nothing And Cell Like "?*" Then
With Cell.Offset(0, -4)
.Value = Date
.EntireColumn.AutoFit
    End With
    End If
    Next Cell
End Sub
19.06.2013 21:45:05
Здравствуйте!! Подскажите пожалуйста! Как сделать чтобы не вставлялось текущая дата то есть всегда только время?
Заранее благодарен!!!!!!
02.07.2013 10:30:31
Проще всего, не меняя макрос, установить для ячеек с датой формат без отображения даты, но с временем.
23.06.2013 20:51:44
Доброго времени суток! Ваш сайт - находка! Благодарю от души.
Я попробовал разные варианты с датой, приведённые здесь, но мне требуется такой эффект:
1) Вставляю ЗНАЧЕНИЕ в ячейку столбца-диапазона, в соседней ячейке отражается дата первого изменения
2) Это ЗНАЧЕНИЕ можно изменить в течение дня
3) В последующие дни изменение ячейки невозможно
4) Админ может обнулить значение, сняв защиту с листа
Как это сделать? Всю голову сломал! HELP ME!
02.07.2013 10:29:07
Писать совершенно другой и достаточно сложный макрос, который будет учитывать текущую дату, определять имя пользователя и разрешать/запрещать действия с ячейкой даты.
02.07.2013 15:28:33
Добрый день.
Помогите мне, пожалуйста.
Я составляю файл для учета рабочего времени сотрудников. Знания в экселе скромные.
Чтобы не морочиться с вводом даты и временем, использую короткий макрос:
 
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 1 Then
   Target.Offset(, 2) = Date
   Target.Offset(, 4) = Time
   End If
End Sub

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

А так же меня весьма привлекла задумка от (Сергей 05.06.2013 12:50:24) на тему фиксации дата, время, имя компа, имя пользователя. Я Тоже планирую подобным образом использовать файл.

Как мне все это реализовать?
04.07.2013 15:06:05
Всем, доброго времени суток!
Случайно натолкнулся на этот великолепный сайт, но ответа на свой вопрос пока не нашел: можно ли сделать так, чтобы дата ставилась автоматически при вводе данных, но только за прошедшие сутки. Я отмечаю накладные на следующий день и ввожу в таблицу для отчета.
Заранее, благодарю.
06.07.2013 19:00:58
Как сделать так, чтоб при изменении данных в ячейке F1 (или диапазоне ячеек) в ячейку С1 вносилась текущая дата, при этом дата не должна изменяться при дальнейших изменениях в ячейке (или диапазоне ячеек), если эти изменения будут вноситься в следующий день или через неделю, даже через год...
Так-же интересует вопрос, можно ли сделать чтоб лист переименовывался на эту же дату плюс содержимое одной из ячеек через определенный символ (символ: - или / )
06.08.2013 14:18:19
Добрый день, зарегился, можно сказать, только что б спросить, однако ресурс полезен :D и в дальнейшем пригодится, я думаю, ни раз. Так как познания в Excel, а тем более в макросах, слабоваты.

Собственно вопрос по макросу:
что изменить в нём для того, что бы дата с числом вставлялись в "А" только если "В" имеет какое - то значение (не пуста)? И что б дата с числом автоматически удалялись, если содержание ячейки  "В" удалить? И пр этом нужно, что б, однажды добавленная дата, при последующем редактировании ячейки "В" уже не менялась.
Сколько ни пытался понять сам, методом тыка, так и не понял. Я знаю, что подобные вопросы были, но самостоятельно у меня не выходит всё это скомпоновать.
Private Sub Worksheet_Change(ByVal Target As Range)
   For Each cell In Target
      If Not Intersect(cell, Range("B2:B1000";)) Is Nothing Then
           With Range("A" & cell.Row)
              .Value = Now
              .EntireColumn.AutoFit
           End With
      End If
   Next cell
End Sub
Добрый день!

Прошу помощи!
Куда нужно вставить "условие" и какое, для того что бы дата корректировалась, если изменяется не только одна ячейка

Например: начал вводить данные - одна дата,  позже изменил статус, и эта дата обновилась.
Спасибо!


Private Sub Worksheet_Change(ByVal Target As Range)
   
   For Each cell in Target   'проходим по всем измененным ячейкам
If Not Intersect(cell, Range("A2:A100";)) Is Nothing Then  'если изменененная ячейка попадает в диапазон A2:A100
With cell.Offset(0, 1)   'вводим в соседнюю справа ячейку дату
  .Value = Now
  .EntireColumn.AutoFit  'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
End With
End If
   Next cell
End Sub
18.09.2013 02:41:13
Добрый день! Спасибо за макрос. Помогите, пожалуйста, решить вопрос. Как сделать чтобы этот макрос реагировал не только на ручной ввод данных в ячейку? Например если ячейка меняет свое содержимое по к.л. формуле макрос не ставит текущую дату, тоже происходит если в ячейку вносятся данные из элемента управления ActiveX  (типа TextBox), значение в ячейке меняется, а дата - нет. Спасибо вам за помощь.
DX
18.09.2013 23:43:44
Доброго времени суток, классный сайт! У меня вопрос, дата в моем случае находится в столбце "А" а номер заказа в столбце "В" Как им  образам  поменять местами? Заранее огромное спасибо!  
21.09.2013 15:39:58
Укажите в коде макроса B2:B100 вместо А2:А100 и в методе Offset -1 вместо 1.
29.09.2013 13:14:05
Приветствую. Рад что есть такой сайт. И базовый макрос очень пригодился. Но подскажите, если мне необходимо в 2-х или 3-х столбцах на одном листе фиксировать время? Как я должен поступить? Пробовал Вставлять, макрос с другими координатами массива, следом за первым выдает ошибку. Если я ставлю данные в столбец А время отображается в столбце В, а если еще ввожу данные в столбец Е, то время должно фиксироваться в столбце F. Буду благодарен за подсказку.  
08.10.2013 11:21:32
Юрий, этот вопрос уже задавали - почитайте комменты. Вам нужно подправить чувствительный диапазон в макросе:
If Not Intersect(cell, Range("A2:A100") Is Nothing Then  
на
If Not Intersect(cell, Range("A2:A100;E2:E100") Is Nothing Then  
28.11.2015 17:41:37
Доброго времени суток! огромное спасибо за Вашу помощь,
  но данный вариант не работает, вместо " ; " нужно ","
  также проблемка с снятием, постановкой на защиту, не работает в том варианте который дан выше.
  сам исходник использую, спасибо большое
  также хорошая подсказка с вводом имени
в макросах я полный ноль, но с такими шаблонами и подсказками, грех не воспользоваться :)
03.10.2013 19:29:26
а не проще к диапазону ячеек A1:А5  применить форматирование как таблицу, и прописать формулу в ячейку B2   =ЕСЛИ( A2<>0; СЕГОДНЯ(); "" ),  протянуть за крестик формулу и применить к этим ячейкам формат-дата,  тогда при вставке значения в А6 автоматически будет вставляться текущая дата? :)
08.10.2013 18:56:28
Ну, это тоже один из вариантов, весьма неплохой. Везде есть свои плюсы и минусы.
14.10.2013 08:41:52
Если интересно, то сегодня я сегодня случайно обнаружил, что CTRL + : (русская Ж) вставляет текущую дату в ячейку
14.10.2013 09:54:42
Не всегда. Если в системе по умолчанию стоит русский язык, то работать не будет, а нужно нажать Ctrl+Shift+4.
20.10.2017 10:23:33
А как все так же сделать, только через кнопку - "галочку", нажимаешь на нее и в нужную ячейку заполняется нынешняя дата?
08.10.2013 14:47:25
крутой код!)
17.10.2013 05:26:28
Доброго времени суток, Николай! Большое спасибо за сайт!
Что и куда надо вставить, так что бы:
1) Когда "растягиваешь" то есть увеличиваешь число строк в  "таблице", Дата НЕ Заполнялась автоматически в новые и старый ячейки-строки? ( то есть тяну, а он сразу вставляет дату+ еще и старые заменяет.
и 2) что бы дата НЕ вставлялась когда:
а) случайно активировал ячейку
и как сдлать так что бы: 3) Удалил значение удалилась дата



 Private Sub Worksheet_Change(ByVal Target As Range)
     
    For Each cell In Target   'проходим по всем измененным ячейкам
       If Not Intersect(cell, Range("B2:B100")) Is Nothing Then  'если изменененная ячейка попадает в диапазон A2:A100
            With cell.Offset(0, -1)         'вводим в соседнюю справа ячейку дату
               .Value = Date
               .EntireColumn.AutoFit  'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
            End With
       End If
    Next cell
End Sub

Комментарий СердЖиГ 06.10.2012 16:54:49 МНЕ НЕ ПОМОГ
17.10.2013 07:51:00
1. Не использовать Таблицу
2. "Случайно" - это как? И чем будет отличаться от "не случайно"?
3. Написать еще один макрос аналогичного вида
17.10.2013 10:41:41
1) ну это как то не профисеонально)))) как анализ то делать, за месяц или неделю без таблицы, там же фильтры?)))))
2 и 3 не имеют смысла)))
18.10.2013 02:07:09
здравствуте, обалденный макрос разобрался настроил под себя,
но ни как не могу задать формат даты, надо чтоб указывал только день и месяц!

помогите

спасибо  
25.10.2013 07:49:48
Формат ячейки - Число - Дата - и выбрать подходящий формат не помогает?
26.10.2013 20:22:42
Спасибо Николай, так в том то и дело что при выполнение макроса размер ячейки менялся, но разобралься сам удалил и макроса   .EntireColumn.AutoFit , и тогда размер остаёться заданным.

Спасибо Александр
14.12.2013 11:54:27
Здравствуйте!
Подскажите кто нибудь :)
Можно ли как то усовершенствовать макрос, чтобы вместе с датой он вставлял в ещё одну соседнюю ячейку порядковые номера?
14.12.2013 12:37:54
Т.е. я вношу изменения в А1, в В1 вставляется дата (реализовано), а в С1 номер 1.
    вношу изменения в А2, в В2 вставляется дата, в С2 номер 2 и т.д.
26.12.2013 09:05:48
Столкнулся с проблемой, что ячейка, куда вноситься автоматическая дата, уж очень широка. Она становиться шире самой даты раза в 3.
Постоянно сужаю в ручную, но  при каждой работе макроса он опять расширяет.
Так понимаю, что надо мне что-то с автоподбором ширины сделать. Он почему-то определяет ее намного шире, чем надо))

P.S
В общем вставил закрепленный размер ширины ячейки, под свои запросы

   
Вместо
EntireColumn.AutoFit
Вставил

Columns("C:C").ColumnWidth = 14# 

Где "С:С" это необходимая мне колонка, а "14"  - размер
26.12.2013 16:13:59
Можно просто удалить строчку
.EntireColumn.AutoFit  
Страницы: 1  2  3  4  5  
Наверх