Самый очевидный способ - использовать события 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