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

时间:2016-07-06 21:27:47

标签: excel vba excel-vba

我试图基本上使用最近编辑的单元格的地址来更新一个特定单元格。我遇到了堆栈空间错误,我不知道为什么。我猜也许一个电话没有完成,所以它只是在每次通话时填满堆栈?

我有以下代码:

工作表代码

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

我还有一个全局变量,它将保存最后编辑过的单元格的位置。如果有一个比全局变量更好的方法,我愿意讨论。谢谢!

2 个答案:

答案 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关于将变量存储在参考表中的建议,我可以在以后访问该参考表。

我想一个离别的问题是,有没有办法在没有人真正看到参考表出现的情况下这样做?

感谢大家的投入,我很感激!

为了回答原始问题,我完全使用了托马斯的代码。