gpt4 book ai didi

VBA:当工作簿/工作表中发生最后一个错误时,如何通过 VBA 代码获取最后使用的单元格?

转载 作者:行者123 更新时间:2023-12-02 08:55:49 25 4
gpt4 key购买 nike

最终,我想将单元格移动到上次发生错误的位置。 编辑:忘记说我正在使用 Excel 2003。

最佳答案

根据评论中的要求...

在 Excel VBA 帮助中查找“Application”对象的“Caller”属性。当您从 VBA 例程中使用它时,它会告诉您对例程的调用来自哪里 - 什么范围、图表等。

使用“Application.Caller”时需要注意的重要一点是它并不总是 Range 对象。查看帮助,发现该属性返回一个 Variant 值,可以是 Range、String 或 Error。 (如果您感兴趣的话,它是一个 Range 对象,但您需要注意这一点。)

由于上述原因,以及 VBA 语法在对象与值方面的变幻莫测,使用“Application.Caller”可能会很棘手。放置一行:

Debug.Print Application.Caller.Address
当调用者不是 Range 时,代码中的

将失败。做类似的事情:

Dim v
v = Application.Caller

将“编译”,但当调用者是 Range 时会创建循环引用,因为您试图访问调用 Range 的值。

这一切都意味着最好为自己编写一些实用函数:

Public Function currentCaller() As String
If TypeOf Application.Caller Is Range Then
Dim rng As Range
Set rng = Application.Caller

currentCaller = rng.Address(External:=True)
Else
currentCaller = CStr(Application.Caller)
End If
End Function

然后从您想知道调用来自何处的错误处理程序中调用它。

还有一件事 - 显然,只有在实际调用 VBA 例程后,这才能告诉调用者。如果您的调用公式中有错误,Excel 会将错误值返回到您的单元格,而无需调用您的 VBA 例程。

关于VBA:当工作簿/工作表中发生最后一个错误时,如何通过 VBA 代码获取最后使用的单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3861431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com