You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA中如何优化函数返回错误的抛出方式(避免中间变量)

解决方案

方案1:紧凑条件判断(无需中间变量)

如果你的DeleteTable是幂等操作(比如重复删除不存在的表不会引发额外问题),可以直接用一行代码实现需求:

Private Sub cmdRefresh_Click()
    If DeleteTable("tblFoo") Then Err.Raise DeleteTable("tblFoo")

    'do stuff
End Sub

原理:VBA里0等价于逻辑False,非0的错误号等价于True,所以当函数返回非0值时,会自动进入分支抛出对应错误。

方案2:修改原函数(更简洁的长期方案)

如果不需要保留原函数返回错误号的逻辑,可以直接让DeleteTable在出错时主动抛出异常,调用时无需额外处理返回值:

Public Sub DeleteTable(tblName As String)
    On Error Resume Next
    DoCmd.DeleteObject acTable, tblName
    If Err.Number <> 0 Then Err.Raise Err.Number
End Sub

调用代码会变得非常简洁:

Private Sub cmdRefresh_Click()
    DeleteTable "tblFoo" ' 出错时自动抛出异常,无需额外判断

    'do stuff
End Sub

内容的提问来源于stack exchange,提问作者MaybeOn8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:22:56