Как использовать ByVal Target As Range. Таким образом, он применяется к нескольким ячейкам и не зависит от - PullRequest
0 голосов
/ 05 февраля 2020

Цель этого кода - каждый раз, когда ячейка E6: E36 меняется с «Да» или на «Ввод не завершенной даты выполнения действия». Я хочу, чтобы он запускал свой макрос.

Он работает только тогда, когда E6 помечен, чтобы соответствовать следующему значению. Как мне сделать так, чтобы он не зависел от предыдущего значения ячеек?

Я новичок в VBA, поэтому я немного растерялся. Любая помощь будет принята с благодарностью. Смотрите текущий код ниже:

  Private Sub Worksheet_Change(ByVal Target As range)

Application.EnableEvents = False 'pervent triggering another change event
    On Error GoTo ERR_HANDLING

 If Not Intersect(Target, range("E6:E36")) Is Nothing Then
Select Case range("E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E19,E20,E21,E22,E23,E24,E25,E26,E27,E28,E29,E30,E31,E32,E33,E34,E35,E36")
Case "Yes": EnterDate_of_last_Submission

End Select
End If

 If Not Intersect(Target, range("E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E19,E20,E21,E22,E23,E24,E25,E26,E27,E28,E29,E30,E31,E32,E33,E34,E35,E36")) Is Nothing Then
Select Case range("E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E19,E20,E21,E22,E23,E24,E25,E26,E27,E28,E29,E30,E31,E32,E33,E34,E35,E36")
Case "Enter Non Final Action Taken Date": EnterNonFinal_Date

End Select
End If

On Error GoTo 0
ERR_HANDLING:
    Application.EnableEvents = True

    If Err.Number <> 0 Then
        Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContex

    End If
End Sub

Example of Problem

1 Ответ

1 голос
/ 05 февраля 2020

Вам нужно l oop здесь и сравнить ячейку за ячейкой, что-то вроде следующего:

Private Sub Worksheet_Change(ByVal Target As range)
    Dim rngToCheck as Range
    Set rngToCheck = Intersect(Target, Me.Range("E6:E36"))

    If rngToCheck Is Nothing Then Exit Sub

    On Error GoTo SafeExit
    Application.EnableEvents = False

    Dim rng as Range
    For Each rng in rngToCheck
        Select Case rng.Value
            Case "Yes"
                EnterDate_of_last_Submission
            Case "Enter Non Final Action Taken Date"
                EnterNonFinal_Date
        End Select
     Next

SafeExit:
    Application.EnableEvents = True
End Sub

Скорее всего, EnterDate_of_last_Submission и EnterNonFinal_Date следует переписать так, чтобы получить Range параметр, а именно ячейка, в которую вводится дата (которая выглядит так, как если бы она соответствовала rng.Offset(,1) с вашей текущей настройкой.

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