Страницы: 1
RSS
Автоматическое добавление даты в определённую ячейку через VBA
 
Измучился совсем...весь интернет перерыл, но найти не могу. Заранее благодарю за ответ
Изменено: sabotajue - 25.07.2013 21:45:35
 
Сдается что Вы слегка лукавите батенька
Цитата
sabotajue пишет:весь интернет перерыл, но найти не могу
В приемах здесь на сайте целый раздел по работе с датой и быстрому вводу.
 
Зашёл, но это всё не то...
Я хотел бы чтобы при внесении или изменений значений, в определённой ячейке отображалась дата изменения.

Если кто-то владеет информацией! Очень прошу напишите код vba. Заранее благодарю
 
Цитата
sabotajue пишет:
Я хотел бы чтобы при внесении или изменений значений,  в определённой ячейке  отображалась дата изменения.
Как раз об этом и написана вот ЭТА статья в разделе "Приемы".
 
Там написано, что значение будут вставляться в столбик, а мне нужно чтобы вставлялось в ячейку например Z3. И не добавлялось вниз по столбику или по строке, а менялось на новую дату и время.  :)
Изменено: sabotajue - 27.07.2013 10:00:00
 
1. Не нужно меня цитировать. Вы вообще без цитат можете отвечать?
2. Найдите в коде строку:
Код
With cell.Offset(0, 1)   


и поменяйте её так:
Код
With Range("Z3")   

Дата будет меняться в этой ячейке.
 
Спасибо большое Юрий :)
 
Отредактируйте свои сообщения.
 
Скажите а почему я не могу скопировать значение из ячейки Z3? Оно при просмотре есть, а как пытаюсь скопировать его формулой в другой фаил, его нет? Такое ощущение что это как маска.
Изменено: sabotajue - 25.07.2013 11:00:27
 
Никакая это не маска - обычное значение. А просто скопировать в другую ячейку на листе можете?
 
Скажите а как сделать так, чтобы время бралось по МСК? А то регионы будут заходить править, а время будет отображаться по их региону (Например Сахалинская область +7 часов)
 
Получил вопрос от автора топика , но уже Вконтакте.

Вопрос заключается на самом деле в следующем- Необходимо при изменении значения ячейки поля (к примеру А1) выводить в соседней ячейке (к примеру B1 ) текущее значение времени в формате Now() , но обязательно всегда чтобы отображалось Московское Время, независимо от региона ввода - Нью Йорк это будет, Новосибирск или Пекин.
Проблему решил интересным способом, на изменение значения ячейки можно повесить следующую процедуру:

Код
Public Function GetDateTime()
 'Москва (+14400 s)
 Dim t#
 With CreateObject("MSXML2.XMLHTTP" ;) 
 .Open "sntp", "http://www.direct-time.ru/track.php?id=time_utc", 0
 .send
 t = .responseText / 1000
 GetDateTime = DateAdd("s", t + 14400, #1/1/1970#)
 End With
End Function




При изменении ячейки можно обращаться к данной процедуре в качестве вставляемого параметра. Данный код обращается к сайту эталону и выгребает оттуда данные по московскому времени с точностью до секунды.
 
Код
Private Sub Worksheet_Change(ByVal Target As Range) 
' а теперь совместим вставку данных московского текущего времени и процедуру изменения ячейки:
 
 Dim GetDateTime
 'Москва (+14400 s)
 Dim t#
 With CreateObject("MSXML2.XMLHTTP" ;)  
 .Open "sntp", "http://www.direct-time.ru/track.php?id=time_utc", 0
 .send
 t = .responseText / 1000
 GetDateTime= DateAdd("s", t + 14400, #1/1/1970#)
 End With

 
 For Each cell in Target 'проходим по всем измененным ячейкам
 If Not Intersect(cell, Range("A2:N1000" ;)  Is Nothing Then 
 With Range("O" & cell.row)
 .Value = GetDateTime
 .EntireColumn.AutoFit 
 End With
 End If
 Next cell
End Sub


Вот и все, надеюсь ответ на вопрос дал.

P.S. Привет всем с сайта про MS Access  :)
Изменено: Сергей Лалов - 25.07.2013 21:48:12
 
Так, вот совсем упростил:

Код
Private Sub Worksheet_Change(ByVal Target As Range)

Dim GetDateTime
' (+14400 s)
Dim t#
With CreateObject("MSXML2.XMLHTTP" ;) 
.Open "sntp", "http://www.direct-time.ru/track.php?id=time_utc", 0
.send
t = .responseText / 1000
GetDateTime = DateAdd("s", t + 14400, #1/1/1970#)
End With

If Target(1, 1).Column = 1 Then Target(1, 2).Value = GetDateTime 
'где Target(1, 1).Column = 1 изменение ловится в первом столбце
' где Target(1, 2).Value = GetDateTime значение московского времени вставляется во второй
End Sub

Образец приложил
Изменено: Сергей Лалов - 26.07.2013 11:14:25
 
Сергей Лалов, для выделени кода есть кнопулька с соответствующим тэгом.
 
Ок, спасибо, я с вашим интерфейсом сайта просто пока не освоился.
Изменено: Сергей Лалов - 26.07.2013 12:21:25
 
Сергей Лалов, Вы издеваетесь? Опять с цитатой?! Увижу ещё одно Ваше сообщение с цитатой - буду удалять. А пока отредактируйте свои существующие сообщения - удалите цитирование.
Страницы: 1
Читают тему (гостей: 2)
Наверх