我试图基本上使用最近编辑的单元格的地址来更新一个特定单元格。我遇到了堆栈空间错误,我不知道为什么。我猜也许一个电话没有完成,所以它只是在每次通话时填满堆栈?
我有以下代码:
工作表代码
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
我还有一个全局变量,它将保存最后编辑过的单元格的位置。如果有一个比全局变量更好的方法,我愿意讨论。谢谢!
答案 0 :(得分:1)
您正在获得堆栈空间不足错误,因为当您更改范围(" 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
答案 1 :(得分:0)
谢谢Thomas,您的代码正是我想要的结果。我只需要查看Scott关于将变量存储在参考表中的建议,我可以在以后访问该参考表。
我想一个离别的问题是,有没有办法在没有人真正看到参考表出现的情况下这样做?
感谢大家的投入,我很感激!
为了回答原始问题,我完全使用了托马斯的代码。