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
相关产品推荐
相关产品推荐

