Получать результаты только при смене нескольких ячеек VBA - PullRequest
0 голосов
/ 02 мая 2020

У меня есть код, который заполняет дату в столбце 3 при изменении значений в ячейке Range("E:J"). Это работает нормально, но я также хотел бы отображать значения столбца 4 (столбец 4 скрыт) в столбце 11, только когда все ячейки в Range(E:J) заполнены.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Intersect(Target, Range("E:J")) Is Nothing Then Exit Sub

    Application.EnableEvents = False
    If Target.Value <> vbNullString Then
        Target.Offset(0, 3 - Target.Column).Value = Date
        Target.Offset(0, 3 - Target.Column).NumberFormat = "dd/mmm/yyyy"
    Else
        Target.Offset(0, 3 - Target.Column).ClearContents
    End If
    Application.EnableEvents = True
End Sub

Любая помощь на это будет принята с благодарностью.

Спасибо.

1 Ответ

0 голосов
/ 02 мая 2020

Рассмотрим:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim tc As Long, r As Range, tr As Long
    Dim wf As WorksheetFunction

    Set wf = Application.WorksheetFunction
    If Target.Count > 1 Then Exit Sub
    tc = Target.Column
    tr = Target.Row
    If Intersect(Target, Range("E:J")) Is Nothing Then Exit Sub
    Set r = Range(Cells(tr, "E"), Cells(tr, "J"))

     Application.EnableEvents = False
        If Target.Value <> vbNullString Then
            Target.Offset(0, 3 - tc).Value = Date
            Target.Offset(0, 3 - tc).NumberFormat = "dd/mmm/yyyy"
        Else
            Target.Offset(0, 3 - tc).ClearContents
        End If

        If wf.CountA(r) = 6 Then
            Cells(tr, 11).Value = Cells(tr, 4).Value
        End If

     Application.EnableEvents = True
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...