Excel 先前活跃的细胞
对于我正在编写的代码,我监视某些单元格范围内的更改,以运行函数和私有sub。为此,我使用Excel 先前活跃的细胞,excel,vba,events,Excel,Vba,Events,对于我正在编写的代码,我监视某些单元格范围内的更改,以运行函数和私有sub。为此,我使用工作表\u change子部分中的Intersect函数 但是,intersect“测试”的触发器始终是我从我正在测试的单元格中“移出”,以确定它是通过鼠标单击进入另一个单元格还是通过光标移动 我需要的是一种定义变量的方法,该变量包含我以前选择的单元格的.address 我尝试了下面的代码,但得到的只是错误 有人知道怎么做吗 Public xfrLastCell As String Public xfrAct
工作表\u change
子部分中的Intersect函数
但是,intersect“测试”的触发器始终是我从我正在测试的单元格中“移出”,以确定它是通过鼠标单击进入另一个单元格还是通过光标移动
我需要的是一种定义变量的方法,该变量包含我以前选择的单元格的.address
我尝试了下面的代码,但得到的只是错误
有人知道怎么做吗
Public xfrLastCell As String
Public xfrActiveCell As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If xfrActiveCell = "" Then xfrActiveCell = ActiveCell.Address
xfrLastCell = xfrActiveCell
xfrActiveCell = ActiveCell
MsgBox xfrLastCell
End Sub
下面的代码适用于我-您对activecell的赋值缺少地址,这意味着activecell变量始终为空
Option Explicit
Public xfrLastCell As String
Public xfrActiveCell As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If xfrActiveCell = "" Then xfrActiveCell = ActiveCell.Address
xfrLastCell = xfrActiveCell
xfrActiveCell = ActiveCell.Address
MsgBox xfrLastCell
End Sub
“记住”范围可能比“记住”范围地址更容易:
Dim Oldcell As Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Oldcell Is Nothing Then
Set Oldcell = Target
Exit Sub
End If
MsgBox "New cell is " & Target.Address & vbCrLf & "Old cell was " & Oldcell.Address
Set Oldcell = Target
End Sub
使用此代码,引用
PreviousActiveCell
将返回所需结果:
Public PreviousActiveCell as Range
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static pPrevious as Range
Set PreviousActiveCell = pPrevious
Set pPrevious = ActiveCell
End Sub
这在单个工作表中起作用。在其他工作表和工作簿中是否需要上一个单元格?
如果不需要。我用过这个:
Public sPreviousTarget As String
Public sTarget As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
sPreviousTarget = sTarget
sTarget = Target.Address
End Sub
另外,Target
不同于ActiveCell
(ActiveCell
指的是Target
中的一个单元格)。-1这是非工作示例OldCell
将始终指向ActiveCell
!嗨,LS_dev:你的观点是100%正确的!只有在sub中,Oldcell才是重要的。它决定了你来自哪里。