gpt4 book ai didi

ms-access - 带有 "With"语句的 VBA 错误处理程序

转载 作者:行者123 更新时间:2023-12-01 08:28:06 24 4
gpt4 key购买 nike

如果不设置标签,VBA 错误处理程序是否可以在 With 语句的开头恢复?

例如:

Dim rst As DAO.Recordset
Set rst = Nothing

On Error GoTo ErrHand
With rst
.AddNew
!MyValue = 1
.Update
.Bookmark = .LastModified
End With

ErrHand:

If Err.Number <> 0 Then
Call SetRST 'Assume this procedure opens the recordset appropriately
Resume
End If
End Sub()

代码将导致“.AddNew”行出错,然后当它通过错误处理程序时将设置记录集,但随后它将在“.AddNew”行恢复。问题是它仍然在 CommentRST 是空的“With”语句中。有没有办法告诉错误处理程序在“With RST”行或“.AddNew”行恢复而不在“With”语句之前创建标签或首先检查空白记录集?

我知道有一些方法可以解决这个问题(正如我刚刚提出的 2 个),但我很好奇这是否可行。

最佳答案

只需向 SetRST 添加一个 byRef 参数。

例如:

Sub SetRST(byref myrs as recordset)
'do stuff
set myrs = ...

顺便说一句,您的错误处理示例很糟糕:只需添加 Exit Sub之前 ErrHand: ,
所以你不需要测试 err.number<>0 ,因为你知道它永远都是。

在你的错误处理中,使用:

call SetRST rst

编辑:
我更喜欢这样的东西:

If rst Is Nothing Then
Set rst = something
End if
With rst
'continue here

关于ms-access - 带有 "With"语句的 VBA 错误处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28725527/

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