使用活动单元格检索数据

时间:2019-02-17 04:13:06

标签: excel vba

我设法使VBA可以使用活动单元格来检索表上的日期和部门编号。我正在使用它进行预先过滤。我想要帮助缩短代码,我需要花很多行。我尝试添加一个消息框,如果单元阀= 0,则显示“ No NCR”。如果选择了按钮并且活动单元格不在表范围内,我还希望显示消息“单击表中的单元格”。

Sub select Range()

If ActiveCell.Address = "$B$7" Then
Range("O6").Value = Range("B5").Value
Range("Q6").Value = Range("A7").Value

ElseIf ActiveCell.Address = "$B$8" Then
Range("O6").Value = Range("B5").Value
Range("Q6").Value = Range("A8").Value

ElseIf ActiveCell.Address = "$B$9" Then
Range("O6").Value = Range("B5").Value
Range("Q6").Value = Range("A9").Value

End If
End Sub

Table Data

2 个答案:

答案 0 :(得分:0)

Intersect可以识别ActiveCell是否在表中。 ActiveCell的行和列可以提供部门和月份。

Sub selectRange()

    if not intersect(activecell, range("B7:M12")) is nothing then
        Range("O6") = cells(5, activecell.column).value
        Range("Q6") = cells(activecell.row, "A").value
    else
        msgbox "not in table"
    end if

End Sub

Worksheet_SelectionChange无需按钮即可完成相同的工作。

答案 1 :(得分:0)

您可以使用Select Case结构以适当的顺序管理相关案件:

Sub selectRange()

    Select Case True
        Case Intersect(ActiveCell, Range("B7:M12")) Is Nothing
            MsgBox "Click on cell in table"

        Case ActiveCell.Value = 0
            MsgBox "No NCR"

        Case Else
            Range("O6") = Cells(5, ActiveCell.Column).Value
            Range("Q6") = Cells(ActiveCell.Row, "A").Value
    End Select

End Sub