如何在VBA的Worksheet_SelectionChange事件中的变量中存储行号?

时间:2019-07-06 06:46:41

标签: excel vba excel-formula

我正在使用Worksheet_SelectionChange事件,在该事件中,我必须获取当前行号并将其用于特定事件。

我必须获取行号并将其存储在变量中,这样我才能将其用于特定事件。

我在“ C”列中有一个下拉列表(“是/否”,“真/假”,“单身”,“多个”)。

•如果用户选择“是/否”,则需要在“ D”列中选择一个“ True”选项。

•如果用户在“ C”列中选择“多个”,则用户需要在“ D”列中至少选择2个“ True”选项,以此类推以进行其他选择...

•如果用户未在“ 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 个答案:

答案 0 :(得分:1)

如果仅需要行号,这可能会有所帮助:

currentRowNumber = Range("A1").Row

上面的代码应将行号分配给变量。除了Range(“ A1”)之外,您可以放任何东西,例如:

currentRowNumber = Target.Row