首页 > 解决方案 > 用于检查字符串是否具有“[”、“]”字符的 VBA 访问代码

问题描述

在我的程序的主要部分,我有这个代码:

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)

但是,如果失败。知道为什么吗?

标签: vbams-access

解决方案


IIF如果您退回的东西对其中一种情况无效,请勿使用!或者更好的是,根本不要IIF在 VBA 中使用。只需使用普通的If语句。

IIF无论条件是否为真,都会评估条件、部分和假部分。如果在您的情况下条件为假,则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

推荐阅读