在Tar​​get.Address之前检查ActiveCell

时间:2017-12-02 19:37:33

标签: excel vba

如果在我点击“A2”之前ActiveCell为“A1”,我希望if子句为true。 它没有按钮或任何东西。只需单击“A2”即可工作。 这是我的尝试:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address(0, 0) = "A2" And ActiveCell.Cells(0, 0) = "A1" Then
MsgBox ("test")
End If
End Sub

有人有解决方案吗?

1 个答案:

答案 0 :(得分:0)

我认为你在这里使用了错误的方法。

如果您使用SelectionChange事件,则表示所选单元格已更改。每次调用事件时都必须存储最后一个单元格的地址。要做到这一点,请在将ActiveCell作为lastCellAddress存储之前设置您的条件,并且它可以正常工作。

这是带有注释的代码,可以帮助您理解:

'Declare the variable out of the event
Dim lastCellAddress As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Check if the last selected cell was A1 when selecting A2
    If (ActiveCell.Address = "$A$2" And lastCellAddress = "$A$1") Then
        'If the condition is true display your MsgBox
        MsgBox ("test")
    End If

    'Set the current address as the last selected for next selection change
    lastCellAddress = ActiveCell.Address
End Sub