VBA访问代码,用于检查字符串是否具有“ [”,“]”字符

时间:2018-11-16 12:50:28

标签: vba ms-access

在程序的主要部分中,我有以下代码:

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)

但是,即使失败了。知道为什么吗?

1 个答案:

答案 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