之前的ActiveCell.Address

时间:2019-06-16 00:10:35

标签: excel vba

我是vba的新手,我有一个很简单的问题。我想获取那里的最后一个活动单元的地址。例如,如果我在A5并搬到B6,是否有命令获取地址A5?

任何类型的提示或建议都将受到高度赞赏!

我已经尝试过ActiveCell.Previous,但这提供了活动单元格左侧的单元格地址。偏移量对我来说毫无用处,因为直到用户更改单元格内的某些内容之前,地址A5才是未知的。

1 个答案:

答案 0 :(得分:1)

最明显的方法是使用Excel的事件。您可以看看SelectionChange事件,它使您能够将先前的选择存储在模块级别,然后在事件的后续触发中检索该值。

在下面的示例中,我使用了Workbook对象的代码背后,因为它使您可以在任何工作表上注册选择,但是您可以在一个工作表上进行相同的操作。

如果您只对某些单元格感兴趣,请查看Intersect函数以完善例程。

Option Explicit

Private pPreviousWorksheet As Worksheet
Private pPreviousSelection As Range

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

    'Check SH object is a worksheet.
    If TypeOf Sh Is Worksheet Then

        'Check we have instances of previous objects.
        If Not pPreviousWorksheet Is Nothing And Not pPreviousSelection Is Nothing Then

            'Process code here...
            MsgBox "Previous was " & _
                pPreviousWorksheet.Name & "!" & _
                pPreviousSelection.Address(False, False)

        End If

        'Re-set the previous objects.
        Set pPreviousWorksheet = Sh
        Set pPreviousSelection = Target

    End If
End Sub