在程序的主要部分中,我有以下代码:
If Me!Proveedor = "BIMBO" Then
Me!NombreProducto = Left(BuscaNombre("BIMBO", Mid(Me!Producto, InStr(1, Me!Producto, "[") + 1, (InStr(1, Me!Producto, "]")) - (InStr(1, Me!Producto, "[")) - 1)), 50)
但是,当Me!Proveedor的值不为'[]'时,代码将失败。 到目前为止,我尝试过的是这段代码:
Me!NombreProducto = iif(InStr(1, Me!Producto, "["), Left(BuscaNombre("BIMBO", Mid(Me!Producto, InStr(1, Me!Producto, "[") + 1, (InStr(1, Me!Producto, "]")) - (InStr(1, Me!Producto, "[")) - 1)), 50), Left(BuscaNombre("BIMBO", Me!Producto.text), 50)
但是,即使失败了。知道为什么吗?
答案 0 :(得分:1)
如果您返回的其中一项条件无效,请不要使用IIF
!或者更好的是,根本不在VBA中使用IIF
。只需使用普通的 If 语句即可。
IIF
会评估条件, True 部分和 False 部分,而不管条件是否为真。如果您的情况为假,则 True 部分无效。
If InStr(1, Me!Producto, "[") Then
Me!NombreProducto = Left(BuscaNombre("BIMBO", Mid(Me!Producto, InStr(1, Me!Producto, "[") + 1, (InStr(1, Me!Producto, "]")) - (InStr(1, Me!Producto, "[")) - 1)), 50)
Else
Me!NombreProducto = Left(BuscaNombre("BIMBO", Me!Producto.text), 50)
End If