Проблема с событием изменения рабочего листа - PullRequest
0 голосов
/ 16 января 2020

Текущая проблема: у меня есть выпадающий список, заполненный с помощью проверки данных со значениями c. Диапазон этого раскрывающегося списка - «G2». Я запускаю событие изменения листа, которое было закодировано в «ThisWorkbook» всякий раз, когда пользователь делает выбор. Однако это событие вызывается каждый раз, когда изменяется любая ячейка на этом листе (конечно, да). Например, ближе к концу кода ниже я манипулирую несколькими вещами и записываю их в другой диапазон ячеек. И из-за этого контроль переходит в неопределенное время. У меня нет идей. Как я могу локализовать событие только для выпадающего списка?

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim sProgramIncrement, sSprintCycle, sSprintStart, sSprintEnd As String
sProgramIncrement = Split(Left(Range("G2"), 7), ".")(0)
sSprintCycle = Split(Left(Range("G2"), 7), ".")(1)
sSprintStart = Split(Right(Range("G2"), 7), "-")(0)
sSprintEnd = Split(Right(Range("G2"), 7), "-")(1)

Select Case Range("G2")
    Case "PI1.S01 J01-J14"
        If sProgramIncrement = "PI1" And Left(sSprintStart, 1) = "J" Then sSprintStartMonth = "01"
        If sProgramIncrement = "PI1" And Left(sSprintEnd, 1) = "J" Then sSprintEndMonth = "01"

        If Left(sSprintStart, 1) = "F" Then sSprintStartMonth = "02"
        If Left(sSprintEnd, 1) = "F" Then sSprintEndMonth = "02"

        If sProgramIncrement = "PI1" And Left(sSprintStart, 1) = "M" Then sSprintStartMonth = "03"

        If sProgramIncrement = "PI2" And sSprintCycle = "S01" And Left(sSprintStart, 1) = "M" Then sSprintStartMonth = "03"

        If sProgramIncrement = "PI2" And Left(sSprintStart, 1) = "A" Then sSprintStartMonth = "04"

        If Left(sSprintStart, 1) = "M" Then sSprintStartMonth = "05"

        If sProgramIncrement = "PI2" And Left(sSprintStart, 1) = "J" Then sSprintStartMonth = "06"

        If sProgramIncrement = "PI3" And Left(sSprintStart, 1) = "J" Then sSprintStartMonth = "07"

        If sProgramIncrement = "PI3" And Left(sSprintStart, 1) = "A" Then sSprintStartMonth = "08"

        If Left(sSprintStart, 1) = "S" Then sSprintStartMonth = "09"
        If Left(sSprintEnd, 1) = "S" Then sSprintEndMonth = "09"

        If Left(sSprintStart, 1) = "O" Then sSprintStartMonth = "10"
        If Left(sSprintEnd, 1) = "O" Then sSprintEndMonth = "10"

        If Left(sSprintStart, 1) = "N" Then sSprintStartMonth = "11"
        If Left(sSprintEnd, 1) = "N" Then sSprintEndMonth = "11"

        If Left(sSprintStart, 1) = "D" Then sSprintStartMonth = "12"
        If Left(sSprintEnd, 1) = "D" Then sSprintEndMonth = "12"

        Worksheets("KPIs").Range("G3") = sSprintStartMonth & "/" & Right(sSprintStart, 2) & "/" & "20"
        Worksheets("KPIs").Range("I3") = sSprintStartMonth & "/" & Right(sSprintEnd, 2) & "/" & "20"


End Select
End Sub

enter image description here

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