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

Вход

Регистрация

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

 

= Мир MS Excel/Запись времени изменения ячейки формулой - Мир MS Excel

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

Excel 2007
Добрый день! помогите, пожалуйста, использую для записи времени изменения ячейки данный код (ниже, давно где то нашел), но теперь структура файла поменялась, и та ячейка, данные в которую вносились вручную, стала меняться формулой и соответственно данный код уже не работает. Понимаю, что надо использовать Calculate, но ума не хватает чтобы новый код работал так же. Помогите пожалуйста написать код, пример в файле
т.е. в примере: при изменении ячейки формулой в столбце L - должно проставляться время в параллельной ячейке столбца M

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("L2:L100")) Is Nothing Then
With Target(1, 2)
.Value = Now
.EntireColumn.AutoFit
End With
End If
End Sub
[/vba]
К сообщению приложен файл: 8841250.xlsm (17.8 Kb)
 
Ответить
СообщениеДобрый день! помогите, пожалуйста, использую для записи времени изменения ячейки данный код (ниже, давно где то нашел), но теперь структура файла поменялась, и та ячейка, данные в которую вносились вручную, стала меняться формулой и соответственно данный код уже не работает. Понимаю, что надо использовать Calculate, но ума не хватает чтобы новый код работал так же. Помогите пожалуйста написать код, пример в файле
т.е. в примере: при изменении ячейки формулой в столбце L - должно проставляться время в параллельной ячейке столбца M

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("L2:L100")) Is Nothing Then
With Target(1, 2)
.Value = Now
.EntireColumn.AutoFit
End With
End If
End Sub
[/vba]

Автор - Igrik555
Дата добавления - 13.06.2014 в 15:21
KuklP Дата: Суббота, 14.06.2014, 19:59 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
В Вашем примере нет формул.
Где-то в сторонке, или на другом листе хранить копию данных и сравнивать.
[vba]
Код
Private Sub Worksheet_Calculate()
      Dim a, b, i&
      a = [l2:l100]: b = [p2:p100]
      For i = 1 To UBound(a)
          If a(i, 1) <> b(i, 1) Then
              [m3] = Time
              b(i, 1) = a(i, 1)
          End If
      Next
      [p2].Resize(UBound(b)) = b
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Суббота, 14.06.2014, 20:00
 
Ответить
СообщениеВ Вашем примере нет формул.
Где-то в сторонке, или на другом листе хранить копию данных и сравнивать.
[vba]
Код
Private Sub Worksheet_Calculate()
      Dim a, b, i&
      a = [l2:l100]: b = [p2:p100]
      For i = 1 To UBound(a)
          If a(i, 1) <> b(i, 1) Then
              [m3] = Time
              b(i, 1) = a(i, 1)
          End If
      Next
      [p2].Resize(UBound(b)) = b
End Sub
[/vba]

Автор - KuklP
Дата добавления - 14.06.2014 в 19:59
Igrik555 Дата: Понедельник, 16.06.2014, 15:11 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
спасибо. я с формулами понял Вас, макрос работает. Только как сделать, чтобы время записывалось напротив каждой ячейки, где меняется условие. Сейчас по данному коду запись идет только в ячейку М3.
Помогите пожалуйста!
 
Ответить
Сообщениеспасибо. я с формулами понял Вас, макрос работает. Только как сделать, чтобы время записывалось напротив каждой ячейки, где меняется условие. Сейчас по данному коду запись идет только в ячейку М3.
Помогите пожалуйста!

Автор - Igrik555
Дата добавления - 16.06.2014 в 15:11
KuklP Дата: Понедельник, 16.06.2014, 15:23 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
[vba]
Код
Private Sub Worksheet_Calculate()
     Dim a, b, i&
     Application.EnableEvents = 0
     a = [l2:m100]: b = [p2:q100]
     For i = 1 To UBound(a)
         If a(i, 1) <> b(i, 1) Then
             b(i, 2) = Time
             b(i, 1) = a(i, 1)
         End If
     Next
     [p2:q100] = b
     [l2:m100] = b
     Application.EnableEvents = -1
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение[vba]
Код
Private Sub Worksheet_Calculate()
     Dim a, b, i&
     Application.EnableEvents = 0
     a = [l2:m100]: b = [p2:q100]
     For i = 1 To UBound(a)
         If a(i, 1) <> b(i, 1) Then
             b(i, 2) = Time
             b(i, 1) = a(i, 1)
         End If
     Next
     [p2:q100] = b
     [l2:m100] = b
     Application.EnableEvents = -1
End Sub
[/vba]

Автор - KuklP
Дата добавления - 16.06.2014 в 15:23
Igrik555 Дата: Понедельник, 16.06.2014, 19:02 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
спасибо!все гуууд hands
 
Ответить
Сообщениеспасибо!все гуууд hands

Автор - Igrik555
Дата добавления - 16.06.2014 в 19:02
Denis_0110 Дата: Понедельник, 07.07.2014, 21:04 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 60% ±

Excel 2003
Здравствуйте друзья!
Не могли бы вы и мне помочь... У меня практически аналогичная задача. У меня строчки колонки А изменяются сторонней программой поочередно и надо чтобы в колонках B и C проставлялась дата и время... Мой скрипт приведен ниже и работает он только для одной ячейки в столбце А. У меня не получается задействовать весь столбец...
[vba]
Код

Private Sub Worksheet_Calculate()
Dim target As Range
Set target = Range("A3")
If target.Offset(0, 1).Value = "" Then
target.Offset(0, 1) = Date
target.Offset(, 2) = Format(Now, "hh:nn")
End If
End Sub
[/vba]

если я ставлю range(''A3:A100'') то у меня вечно появляется ошибка... я думаю, что возможно у меня проблемма с заданием типов переменых. Если что простите за грубые ошибки я новичек в этом деле. Заранее спасибо, буду очень блогадарен за помощь.


Сообщение отредактировал Serge_007 - Понедельник, 07.07.2014, 22:33
 
Ответить
СообщениеЗдравствуйте друзья!
Не могли бы вы и мне помочь... У меня практически аналогичная задача. У меня строчки колонки А изменяются сторонней программой поочередно и надо чтобы в колонках B и C проставлялась дата и время... Мой скрипт приведен ниже и работает он только для одной ячейки в столбце А. У меня не получается задействовать весь столбец...
[vba]
Код

Private Sub Worksheet_Calculate()
Dim target As Range
Set target = Range("A3")
If target.Offset(0, 1).Value = "" Then
target.Offset(0, 1) = Date
target.Offset(, 2) = Format(Now, "hh:nn")
End If
End Sub
[/vba]

если я ставлю range(''A3:A100'') то у меня вечно появляется ошибка... я думаю, что возможно у меня проблемма с заданием типов переменых. Если что простите за грубые ошибки я новичек в этом деле. Заранее спасибо, буду очень блогадарен за помощь.

Автор - Denis_0110
Дата добавления - 07.07.2014 в 21:04
KuklP Дата: Понедельник, 07.07.2014, 21:10 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Во-первых читайте правила. Где пример?
По сути вопроса: если проверяете группу ячеек, необходимо в цикле просматривать каждую. Как - показано выше.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеВо-первых читайте правила. Где пример?
По сути вопроса: если проверяете группу ячеек, необходимо в цикле просматривать каждую. Как - показано выше.

Автор - KuklP
Дата добавления - 07.07.2014 в 21:10
millik Дата: Вторник, 08.07.2014, 13:29 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
Перепишите код добавив цикл для обхода каждой ячейки в диапазоне

[vba]
Код
Private Sub Worksheet_Calculate()
Dim target As Range
Dim Cell As Variant

Set target = Range("A3:A100")
For Each Cell In target.Cells
     If Cell.Offset(0, 1).Value = "" Then
         Cell.Offset(0, 1) = Date
         Cell.Offset(, 2) = Format(Now, "hh:nn")
     End If
Next Cell

End Sub
[/vba]
 
Ответить
СообщениеПерепишите код добавив цикл для обхода каждой ячейки в диапазоне

[vba]
Код
Private Sub Worksheet_Calculate()
Dim target As Range
Dim Cell As Variant

Set target = Range("A3:A100")
For Each Cell In target.Cells
     If Cell.Offset(0, 1).Value = "" Then
         Cell.Offset(0, 1) = Date
         Cell.Offset(, 2) = Format(Now, "hh:nn")
     End If
Next Cell

End Sub
[/vba]

Автор - millik
Дата добавления - 08.07.2014 в 13:29
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запись времени изменения ячейки формулой (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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