Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Автоматическое заполнение времени и даты - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автоматическое заполнение времени и даты (Макросы/Sub)
Автоматическое заполнение времени и даты
aevgrafov Дата: Вторник, 07.03.2017, 10:50 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день.
Подскажите, пжлст:
С помощью макроса
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)

For Each cell In Target
If Not Intersect(cell, Range("A2:A10000")) Is Nothing Then
With cell.Offset(0, 1)

.Value = Now
.EntireColumn.AutoFit
End With
End If

Next cell
End Sub
[/vba]


задал условие, при заполнении ячеек в диапазоне А2:А10000 в соседних ячейках появлялись текущие дата и время.
Вопросы:

1. При любом действии в ячейках А2:А10000, даже нажатии кнопки DEL в соседних ячейках появляются дата/время. Как этого избежать?
2. При изменении ранее внесенного значения в А2:А10000, естественно, в соседней ячейке дата/время обновляются на текущую. Можно ли сделать так: если я внес данные в диапазон А2:А10000 07.03.2017 в 10:48, то при изменении данных через, скажем, 4 дня, дата в соседней ячейке осталась 07.03.2017 в 10:48, а не изменилась на текущую?
3. Мне необходимы подобные условия в нескольких диапазонах одного листа. Как добавить условие внесения текущих даты/времени в соседнюю от заполняемой ячейки для еще нескольких диапазонов?

Спасибо


Сообщение отредактировал aevgrafov - Вторник, 07.03.2017, 14:42
 
Ответить
СообщениеДобрый день.
Подскажите, пжлст:
С помощью макроса
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)

For Each cell In Target
If Not Intersect(cell, Range("A2:A10000")) Is Nothing Then
With cell.Offset(0, 1)

.Value = Now
.EntireColumn.AutoFit
End With
End If

Next cell
End Sub
[/vba]


задал условие, при заполнении ячеек в диапазоне А2:А10000 в соседних ячейках появлялись текущие дата и время.
Вопросы:

1. При любом действии в ячейках А2:А10000, даже нажатии кнопки DEL в соседних ячейках появляются дата/время. Как этого избежать?
2. При изменении ранее внесенного значения в А2:А10000, естественно, в соседней ячейке дата/время обновляются на текущую. Можно ли сделать так: если я внес данные в диапазон А2:А10000 07.03.2017 в 10:48, то при изменении данных через, скажем, 4 дня, дата в соседней ячейке осталась 07.03.2017 в 10:48, а не изменилась на текущую?
3. Мне необходимы подобные условия в нескольких диапазонах одного листа. Как добавить условие внесения текущих даты/времени в соседнюю от заполняемой ячейки для еще нескольких диапазонов?

Спасибо

Автор - aevgrafov
Дата добавления - 07.03.2017 в 10:50
Pelena Дата: Вторник, 07.03.2017, 11:54 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19197
Репутация: 4423 ±
Замечаний: ±

Excel 365 & Mac Excel
aevgrafov, оформите код тегами (кнопка #)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщениеaevgrafov, оформите код тегами (кнопка #)

Автор - Pelena
Дата добавления - 07.03.2017 в 11:54
aevgrafov Дата: Вторник, 07.03.2017, 12:15 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Pelena, а что это значит?
 
Ответить
СообщениеPelena, а что это значит?

Автор - aevgrafov
Дата добавления - 07.03.2017 в 12:15
devilkurs Дата: Вторник, 07.03.2017, 14:00 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
aevgrafov, в первом Вашем сообщении код макроса, который вы выделили жирным, оформите соответствующими тегами. (поднимите на изменение сообщение, выделите текст кода и нажмите # на панели)


 
Ответить
Сообщениеaevgrafov, в первом Вашем сообщении код макроса, который вы выделили жирным, оформите соответствующими тегами. (поднимите на изменение сообщение, выделите текст кода и нажмите # на панели)

Автор - devilkurs
Дата добавления - 07.03.2017 в 14:00
Nic70y Дата: Вторник, 07.03.2017, 14:46 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 8791
Репутация: 2293 ±
Замечаний: 0% ±

Excel 2010
вдруг правильно
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2:A10000")) Is Nothing Then
    If Target.Offset(0, 1) = "" Then Target.Offset(0, 1) = Now
    End If
End Sub
[/vba]


ЮMoney 41001841029809
 
Ответить
Сообщениевдруг правильно
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2:A10000")) Is Nothing Then
    If Target.Offset(0, 1) = "" Then Target.Offset(0, 1) = Now
    End If
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 07.03.2017 в 14:46
devilkurs Дата: Вторник, 07.03.2017, 15:48 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
aevgrafov,
1) не срабатывает при очищении ячейки (DEL)
2) 345600 секунд - это 4 дня. Обновит дату если она не старше 4 дней
3) Range("A2:A10000", "C2:C10000") - дописываете через запятую нужные интервалы
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
For Each cell In Target
    If Not Intersect(cell, Range("A2:A10000", "C2:C10000")) Is Nothing And cell.Value <> "" Then
        With cell.Offset(0, 1)
            
            If DateDiff("s", .Value, Now) <= 345600 Or .Value = "" Then
                Application.EnableEvents = False
                .Value = Now
                Application.EnableEvents = True
                .EntireColumn.AutoFit
            End If
        End With
    End If
Next cell
End Sub
[/vba]


 
Ответить
Сообщениеaevgrafov,
1) не срабатывает при очищении ячейки (DEL)
2) 345600 секунд - это 4 дня. Обновит дату если она не старше 4 дней
3) Range("A2:A10000", "C2:C10000") - дописываете через запятую нужные интервалы
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
For Each cell In Target
    If Not Intersect(cell, Range("A2:A10000", "C2:C10000")) Is Nothing And cell.Value <> "" Then
        With cell.Offset(0, 1)
            
            If DateDiff("s", .Value, Now) <= 345600 Or .Value = "" Then
                Application.EnableEvents = False
                .Value = Now
                Application.EnableEvents = True
                .EntireColumn.AutoFit
            End If
        End With
    End If
Next cell
End Sub
[/vba]

Автор - devilkurs
Дата добавления - 07.03.2017 в 15:48
aevgrafov Дата: Вторник, 07.03.2017, 16:02 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
devilkurs, Спасибо
При попытке внести данные в ячейки выскакивает ошибка
К сообщению приложен файл: 2633634.jpg (37.6 Kb)
 
Ответить
Сообщениеdevilkurs, Спасибо
При попытке внести данные в ячейки выскакивает ошибка

Автор - aevgrafov
Дата добавления - 07.03.2017 в 16:02
devilkurs Дата: Вторник, 07.03.2017, 17:01 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
aevgrafov,
попробуйте еще 2 способа:
[vba]
Код
Intersect(cell, Union(Range("A2:A10000"), Range("k2:k10000"), Range("g2:g10000")))
[/vba]
или
[vba]
Код
Intersect(cell, Range("A2:A10000, C2:C10000"))
[/vba]


 
Ответить
Сообщениеaevgrafov,
попробуйте еще 2 способа:
[vba]
Код
Intersect(cell, Union(Range("A2:A10000"), Range("k2:k10000"), Range("g2:g10000")))
[/vba]
или
[vba]
Код
Intersect(cell, Range("A2:A10000, C2:C10000"))
[/vba]

Автор - devilkurs
Дата добавления - 07.03.2017 в 17:01
aevgrafov Дата: Четверг, 09.03.2017, 15:27 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
devilkurs, спасибо, всё работает как надо!
 
Ответить
Сообщениеdevilkurs, спасибо, всё работает как надо!

Автор - aevgrafov
Дата добавления - 09.03.2017 в 15:27
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автоматическое заполнение времени и даты (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!