Страницы: 1
RSS
VBA. Если измененная ячейка пустая не вносить изменения в соседнюю ячейку, а менять только дату в ячейке дальше.
 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
On Error Resume Next
For Each cell In Target
    With cell
        If Not Intersect(cell, Range("AE:AE")) Is Nothing Then
            Me.Unprotect Password:="лфкфе1708159357"
            .Offset(0, -1).Value = Now
            Me.Protect Password:="лфкфе1708159357", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True
        ElseIf Not Intersect(cell, Range("AF:AF")) Is Nothing Then
        Me.Unprotect Password:="лфкфе1708159357"
            .Offset(0, -11).Value = Date
            .Offset(0, -20).Value = Date + 30
            .Offset(0, -22).Value = .Offset(0, -7).Value
            .Locked = True
            Me.Protect Password:="лфкфе1708159357", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True
        ElseIf Not Intersect(Target, Range("Y:Y")) Is Nothing Then
        Me.Unprotect Password:="лфкфе1708159357"
        Target.Offset(0, -17) = Target
        .Offset(0, -18).Value = Now
            Me.Protect Password:="лфкфе1708159357", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True
        ElseIf Not Intersect(Target, Range("AI:AI")) Is Nothing Then
        Me.Unprotect Password:="лфкфе1708159357"
            .Offset(0, 1).Value = Now
            Me.Protect Password:="лфкфе1708159357", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True
        End If
    End With
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Помогите пожалуйста поправить макрос, сейчас при изменении значения в диапазоне "Y:Y" в ячейку (0,-17) вставляется  то что туда вводят, а в ячейку (0,-18) - дата и время изменения.

Но при удалении значения из ячейки "Y:Y", мой макрос так же удаляет в ячейке (0,-17) значение которое там было.
Вот нужно сделать так, чтобы именно при удалении он не трогал ячейку (0,-17). Дату изменения (0,-18) пусть вставляет, а значение в ячейке (0,-17) нужно оставить, которое было до удаления.
Изменено: Александр К - 21.04.2018 08:03:37
 
ну так добавьте проверку If target = ""
 
А как это в самом макросе будет выглядеть, вставьте пожалуйста.  
 
Код
ElseIf Not Intersect(Target, Range("Y:Y")) Is Nothing Then
        Me.Unprotect Password:="лфкфе1708159357"
       If Target = "" Then
            .Offset(0, -18).Value = Now
       else
        Target.Offset(0, -17) = Target
        .Offset(0, -18).Value = Now
       end if
            Me.Protect Password:="лфкфе1708159357", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingCells:=True
 
Огромнейшее СПАААССИБО!!!
 
Галочка-птичка, название темы не заметил...
Автору: прошу посетить правила форума, почитать о названии темы.
 
ОФФ
Цитата
vikttur написал:
Галочка-птичка
просто "В" :). каюсь, не заострил внимание.
 
ultrasom, https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=45586&T...=
 
Цитата
V написал: не заострил внимание.
Теперь нужно предложить новое.
 
название: VBA. Если измененная ячейка пустая не вносить изменения в соседнюю ячейку, а менять только дату в ячейке дальше. Как то так.
Страницы: 1
Наверх