Как сохранить номер строки в переменной в событии Worksheet_SelectionChange в VBA? - PullRequest
0 голосов
/ 06 июля 2019

Я использую событие Worksheet_SelectionChange, в котором мне нужно получить текущий номер строки и использовать его для определенного события.

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

У меня есть раскрывающийся список («Да / Нет», «Истина / Ложь», «Один», «Несколько») в столбце «С».

• Если пользователь выбирает «Да / Нет», пользователю необходимо выбрать один параметр «Истина» в столбце «D».

• Если пользователь выбирает «Несколько» в столбце «С»,затем пользователю необходимо выбрать как минимум 2 параметра «Истина» в столбце «D» и т. д. для другого выбора ...

• Если пользователь не выбрал соответствующий параметр в столбце «D», онбудет отображаться предупреждение до тех пор, пока пользователь не выберет соответствующие параметры.

Вот мой код:

Я добиваюсь результатов, о которых я упоминал выше, но мой код статичен каждый раз, когда ядолжен упомянуть номер строки.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    rw = 10
    rng1 = rw + 1
    rng2 = rw + 4

    If Worksheets("Question paper").Range("D" & rw).Value = "Multiple Choice/ Multiple Answer" And _
       WorksheetFunction.CountIf(Range("E" & rng1 & ":" & "E" & rng2), "TRUE") < 2 Then

        MsgBox "Select at least 2 ""TRUE"" option"

    ' for Multiple Choice/Single Answer
    ' if user select more than 1 answer
    ElseIf Worksheets("Question paper").Range("D" & rw).Value = "Multiple Choice/Single Answer" And _
           WorksheetFunction.CountIf(Range("E" & rng1 & ":" & "E" & rng2), "TRUE") > 1 Then

        MsgBox "Select only 1 ""TRUE"" option" 

    End If

Я ожидаю динамическое решение, чтобы я мог использовать его по всему листу.Нет необходимости присваивать переменную с номером строки для определенного диапазона.

1 Ответ

1 голос
/ 06 июля 2019

Если вам нужен только номер строки, это может помочь:

currentRowNumber = Range("A1").Row

Приведенный выше код должен назначить номер строки переменной. Вместо Range («A1») вы можете поместить что-нибудь, например:

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