Come si può ottenere:Imitando l'operatore "IN"
if X in (1,2,3) then
invece di:
if x=1 or x=2 or x=3 then
In altre parole, come si può meglio imitare l'operatore IN
in VBA per Excel?
Come si può ottenere:Imitando l'operatore "IN"
if X in (1,2,3) then
invece di:
if x=1 or x=2 or x=3 then
In altre parole, come si può meglio imitare l'operatore IN
in VBA per Excel?
Non penso che ci sia una soluzione molto elegante.
Tuttavia, si potrebbe provare:
If Not IsError(Application.Match(x, Array("Me", "You", "Dog", "Boo"), False)) Then
o si potrebbe scrivere la propria funzione:
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
Hai provato
eval("3 in(1,2,3,4,5)")
Questo dovrebbe funzionare. –
Ricevo "sub o funzione non definita" - non so se questo è dovuto al fatto che sono in VBA (non VB)? ho modificato la domanda ... –
È la funzione VBA di accesso. Scusa se non ho visto che hai citato Excel VBA. – THEn
C'è nessuno che io sappia .
Io di solito uso un inArray() Funzione fatta in casa come quello di http://www.freevbcode.com/ShowCode.asp?ID=1675
Si potrebbe anche fare una versione che consente di scorrere la matrice, invece di concatenare, se questo è più opportuno il tipo di dati.
Si potrebbe anche provare l'affermazione CASE invece di IF
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
È inoltre possibile utilizzare la funzione di filtro come descritto here
ho scritto adesso ...
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
Non potresti semplicemente evitare la funzione e usare qualcosa come: 'InStr (1, "MeYouDogBoo", x) '? – redOctober13
@ redOctober13 questo potrebbe funzionare se si separano gli elementi dell'elenco con un delimitatore che non può essere trovato in x. Altrimenti, YouDo attiverà InStr. – mrdaddychops