¿Cómo se puede lograr:Imitando el operador "IN"
if X in (1,2,3) then
en lugar de:
if x=1 or x=2 or x=3 then
En otras palabras, ¿cómo se puede imitar mejor el operador IN
en VBA para Excel?
¿Cómo se puede lograr:Imitando el operador "IN"
if X in (1,2,3) then
en lugar de:
if x=1 or x=2 or x=3 then
En otras palabras, ¿cómo se puede imitar mejor el operador IN
en VBA para Excel?
No creo que haya una solución muy elegante.
Sin embargo, usted podría intentar:
If Not IsError(Application.Match(x, Array("Me", "You", "Dog", "Boo"), False)) Then
o usted podría escribir su propia función:
Function ISIN(x, StringSetElementsAsArray)
ISIN = InStr(1, Join(StringSetElementsAsArray, Chr(0)), _
x, vbTextCompare) > 0
End Function
Sub testIt()
Dim x As String
x = "Dog"
MsgBox ISIN(x, Array("Me", "You", "Dog", "Boo"))
End Sub
¿Usted intentó
eval("3 in(1,2,3,4,5)")
Esto debería funcionar. –
Obtengo "sub o función no definida" - ¿no sé si esto es porque estoy en VBA (no en VB)? he editado la pregunta ... –
Es la función de acceso VBA. Lo siento, no vi que mencionas excel VBA. – THEn
No hay ninguno que yo sepa .
que suelen utilizar una función de elaboración casera InArray() como el de http://www.freevbcode.com/ShowCode.asp?ID=1675
También podría hacer una versión que itera a través de la matriz en lugar de la concatenación, si es más apropiado para su tipo de datos.
También puede probar la declaración CASO en lugar de SI
Select Case X
Case 1 To 3
' Code to do something
Case 4, 5, 6
' Code to do something
Case 7
' Code to do something
Case Else
' More code or do nothing
End Select
También puede utilizar la función de filtro como se describe here
escribí ahora ...
Public Function IsInArray(FindValue As Variant, ParamArray arrEmailAttachment()) As Boolean
Dim element As Variant
For Each element In arrEmailAttachment
If element = FindValue Then
IsInArray = True
Exit Function
End If
Next element
IsInArray = False
End Function
¿No podría simplemente evitar la función y usar algo como: 'InStr (1, "MeYouDogBoo", x) '? – redOctober13
@ redOctober13 esto podría funcionar si separa los elementos de la lista con un delimitador que no se puede encontrar en x. De lo contrario, YouDo activaría el InStr. – mrdaddychops