Код доступа VBA, который проверяет, содержит ли строка символы «[», «]» - PullRequest
0 голосов
/ 16 ноября 2018

В основной части моей программы у меня есть этот код:

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 голосов
/ 16 ноября 2018

Не используйте IIF, если вы возвращаете что-то, что не подходит для одного из условий!Или, что еще лучше, вообще не используйте IIF в VBA.Просто используйте обычный оператор 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...