Всем привет
нужна доработка макроса, чтобы он отвечал следующим критериям:
В ячейках в диапазоне F5:F150 указываются даты в формате dd.mm.yy hh:mm.
что нужно:
a) При изменении значения в любой из ячейке указанного диапазона требуется сохранять предыдущее значение (если оно было) в offset 0, 7 cell.
b) Если ячейка (строка) удаляется с рабочего листа, то всю историю изменений в offset 0,7 следует очищать.
Бюджет = 500 руб.
код из примеров, но сохраняет историю изменений в комментарии к ячейке и не обнуляет значение offset 0, 7 после удаления соответствующей ячейки из диапазона F5:F150 или строки, включающей в себя в этот диапазон.
нужна доработка макроса, чтобы он отвечал следующим критериям:
В ячейках в диапазоне F5:F150 указываются даты в формате dd.mm.yy hh:mm.
что нужно:
a) При изменении значения в любой из ячейке указанного диапазона требуется сохранять предыдущее значение (если оно было) в offset 0, 7 cell.
b) Если ячейка (строка) удаляется с рабочего листа, то всю историю изменений в offset 0,7 следует очищать.
Бюджет = 500 руб.
код из примеров, но сохраняет историю изменений в комментарии к ячейке и не обнуляет значение offset 0, 7 после удаления соответствующей ячейки из диапазона F5:F150 или строки, включающей в себя в этот диапазон.
| Код | 
|---|
Private Sub Worksheet_Change(ByVal Target As Range)
Dim NewCellValue$, OldComment$
Dim cell As Range
    
    'если ячейка не в отслеживаемом диапазоне, то выходим
    If Intersect(Target, Range("F5:F150")) Is Nothing Then Exit Sub
    
    'перебираем все ячейки в измененной области
    For Each cell In Intersect(Target, Range("F5:F150"))
    
        If IsEmpty(cell) Then
            NewCellValue = "Ячейка очищена" 'фиксируем очистку ячейки
        Else
            NewCellValue = Format(cell, "dd.mm.yyyy hh:mm")     'или ее содержимое
        End If
        On Error Resume Next
        
        With cell.Offset(rowOffset:=0, columnOffset:=7)
            OldComment = .Comment.Text & Chr(10)
            .Comment.Delete     'удаляем старое примечание (если было)
            .AddComment         'добавляем новое и вводим в него текст
            .Comment.Text Text:=OldComment & Application.UserName & " " & _
                            Format(Now, "dd.mm.yyyy hh:mm") & " : " & NewCellValue
            .Comment.Shape.TextFrame.AutoSize = True    'делаем автоподбор размера
            .Comment.Shape.TextFrame.Characters.Font.Size = 8
        End With
    Next cell
    
End Sub
 | 
					Изменено:						 - 14.07.2016 10:01:53