Excel 先行ActiveCell.Address

Excel 先行ActiveCell.Address,excel,vba,Excel,Vba,我是vba的新手,我有一个相当简单的问题。我想获得最后一个活动单元格的地址。例如,如果我在A5并移动到B6,是否有获取地址A5的命令 任何类型的提示或建议都非常感谢 我试过ActiveCell.Previous,但它提供了活动单元格左侧单元格的地址。偏移量对我没有用处,因为地址A5在用户更改单元格网格中的某些内容之前是未知的。最明显的方法是使用Excel的事件。您可以查看SelectionChange事件,它将使您能够在模块级别存储以前的选择,然后在随后触发事件时检索该值 在下面的示例中,我使用

我是vba的新手,我有一个相当简单的问题。我想获得最后一个活动单元格的地址。例如,如果我在A5并移动到B6,是否有获取地址A5的命令

任何类型的提示或建议都非常感谢


我试过ActiveCell.Previous,但它提供了活动单元格左侧单元格的地址。偏移量对我没有用处,因为地址A5在用户更改单元格网格中的某些内容之前是未知的。

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

在下面的示例中,我使用了工作簿对象的代码隐藏,因为它允许您在任何工作表上注册选择,但您可以在一个工作表上注册选择

如果您只对某些单元格感兴趣,请查看
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

您可以跳过工作表的全局设置,因为
p先前的选择。父项将为您提供该选项。