使用上次编辑单元格的位置更新单元格 – Excel VB错误28“堆栈空间不足”

我试图从根本上得到一个特定的单元格更新与最近编辑的单元格的地址。 我遇到了堆栈空间错误,我不知道为什么。 我猜可能是一个电话不完成,所以它只是填补每个电话的堆栈?

我有以下代码:

工作表代码

Private Sub Worksheet_Change(ByVal Target As Range) Call Module1.last_changed(Target) End Sub 

模块代码

 Public LASTCHANGED As Range Public Function last_changed(changedCell As Range) If LASTCHANGED Is Nothing Then Set LASTCHANGED = changedCell Else LASTCHANGED = changedCell End If Call last_changed_address End Function Public Function last_changed_address() Dim address As Variant address = Split(LASTCHANGED.address, "$") Sheet1.Range("A23").Value = address(1) + address(2) End Function 

我也有一个全局variables,将保存最后编辑单元格的位置。 如果有一个更好的方法来做这个比全球variables,我愿意讨论。 谢谢!

由于当您更改定义无限循环的Range(“A23”)的值时,您正在重新触发Worksheet_Change事件,因此会出现堆栈空间错误。 您需要切换EnableEvents以打破链条。

这应该代替你所有的代码。

 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Range("A23").Value = Target.address(False, False) Application.EnableEvents = True End Sub 

谢谢托马斯,你的代码正是我想要的结果。 我只需要考虑Scott关于将variables存储在参考表中的build议,我可以稍后访问它。

我想一个离别的问题是,是否有办法做到这一点,没有人真正看到参考表显示?

感谢大家的意见我很欣赏!

为了回答最初的问题,我完全使用了Thomas的代码。