Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как запомнить дату изменения ячейки. / 10 сообщений из 10, страница 1 из 1
10.09.2008, 13:23
    #35531801
vakum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запомнить дату изменения ячейки.
Добрый день!

который день ломаю голову над решением данной проблемы
суть:

Есть две пустые ячейки A1 и B1

Если в ячейку В1 вставить 0, то ячейка А1 заполянется по формуле =ЕСЛИ(B1='0';ТДАТА();"-")
Проблема в том, что эта дата опстоянно изменяется вместе с системным времением, а задача состоит что бы зафиксировать дату изменения ячейки на 0.

Буду рад любой здравой мысли.
...
Рейтинг: 0 / 0
10.09.2008, 13:46
    #35531875
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запомнить дату изменения ячейки.
Только макрос
в модуль листа поставь код и пробуй писать 0

Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address( 0 ,  0 ) = "B1" Then
 If [B1] = "0" Then
   [A1] = Now
 End If
End If
End Sub
...
Рейтинг: 0 / 0
11.09.2008, 10:14
    #35533360
vakum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запомнить дату изменения ячейки.
спасибо за ответ.
так и знал, что без макросов тут не обойтись.
...
Рейтинг: 0 / 0
17.06.2009, 15:53
    #36046310
Q8ake
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запомнить дату изменения ячейки.
А как дополнить этот макрос, что бы отображалась дата последнего изменения ячейки?
необязательно на 0...
...
Рейтинг: 0 / 0
17.06.2009, 16:19
    #36046393
Taranaga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запомнить дату изменения ячейки.
Код: plaintext
1.
2.
3.
4.
5.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address( 0 ,  0 ) = "B1" Then
   [A1] = Now
End If
End Sub
...
Рейтинг: 0 / 0
17.06.2009, 17:22
    #36046590
Q8ake
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запомнить дату изменения ячейки.
Спасибо,

небольшое усложнение возникло по ходу...
а как это перенести на столбик...
т.е. в столбце В вносятся изменения значений, а напротив каждой изменяемой ячейки в столбце А фиксируется дата изменения.
...
Рейтинг: 0 / 0
17.06.2009, 21:12
    #36047101
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запомнить дату изменения ячейки.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
    
    Dim rng As Range, c As Range
    
    On Error Resume Next
    
    With Application: .ScreenUpdating = False: .EnableEvents = False: End With
    
    Set rng = Intersect(Target, [B:B])
    rng.Offset(, - 1 ) = Now
    
    With Application: .ScreenUpdating = True: .EnableEvents = True: End With
End Sub
...
Рейтинг: 0 / 0
17.06.2009, 21:15
    #36047104
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запомнить дату изменения ячейки.
Что-то я столько мусора в коде оставил :-) Вот почищенная версия:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
    
    On Error Resume Next
    
    With Application: .ScreenUpdating = False: .EnableEvents = False: End With
    
    Intersect(Target, [B:B]).Offset(, - 1 ) = Now
    
    With Application: .ScreenUpdating = True: .EnableEvents = True: End With
End Sub
...
Рейтинг: 0 / 0
19.06.2009, 15:41
    #36051062
Q8ake
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запомнить дату изменения ячейки.
KL (XL),

Спасибо за помощь, все работает...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.12.2010, 13:23
    #37037001
3BEPOBOY
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запомнить дату изменения ячейки.
авторPrivate Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B:B]) Is Nothing Then Exit Sub

Dim rng As Range, c As Range

On Error Resume Next

With Application: .ScreenUpdating = False: .EnableEvents = False: End With

Set rng = Intersect(Target, [B:B])
rng.Offset(, -1) = Now

With Application: .ScreenUpdating = True: .EnableEvents = True: End With
End Sub
объясните пожалуйста где в этом коде происходит проверка изменялась ли ячейка.
Я загнал этот код себе в макрос
авторPublic Sub proverka()

Dim Rng As Range

Set Rng = Worksheets("Лист1").Range("B1:B10")

Worksheet_Change Rng

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B:B]) Is Nothing Then Exit Sub

On Error Resume Next

With Application: .ScreenUpdating = False: .EnableEvents = False: End With

Intersect(Target, [B:B]).Offset(, -1) = Now

With Application: .ScreenUpdating = True: .EnableEvents = True: End With
End Sub


Получилось вроде что и описано. Если в Rng попадают ячейки из B, напротив них заносится дата. Может не так понял...

А попал я сюда искав решение следующей задачи:
требуется написать макрос, который при закрытии документа будет смотреть, был ли он изменен и в специальный журнал заносить дату последнего изменения. Загвоздка именно в том что я не знаю как проверить изменялся ли файл.
Самое умное, что пока придумал - использовать usedrange , передрать все что попадает в диапазон в вариантный массив или скрытый лист и поячеечно проверять до тех пор пока не выйдут изменения. Но мне кажется это не очень грамотно, тем более что Excel спрашивает перед выходом сохранить изменения или нет, а значит знает были они произведены!
Подскажите пожалуйста если не трудно.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как запомнить дату изменения ячейки. / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]