2016-08-03 3 views
1

Zum Beispiel habe ich eine Liste von zwei Zahlen 0, 1 und ich mag ein Skript in vba laufen, die so geht:VBA - Gibt es so etwas wie Listen?

for i in list: 
    if i in string: 
     do something 
    end if 

dh ich in irgendeiner Zeichenfolge zunächst überprüfen will, ob „0“ , dann tue etwas, und dann überprüfe, ob "1" in der Zeichenkette ist, dann tue etwas usw. In Python hätte ich ein Tupel ["0", "1"] und tue es so, aber wie würde ich darüber gehen in VBA?

Antwort

4

Meinst du das? Sie können ein Array verwenden (was ich nehme an ist technisch ein Tupel, wenn kein Datentyp definiert ist)

For Each i In Array("0", "1", "2", "3") 
    If InStr("1289", i) Then 
     '// Do Something 
    End If 
Next 

Ähnlich:

Dim list As Variant 
Dim someString As String 

someString = "1289" 
list = Array("0", "1", "2", "3") 

For Each i In list 
    If InStr(someString, i) Then 
     '// Do Something 
    End If 
Next 

Bonus Hinweise:

InStr() doesn 'tt tatsächlich True/False zurückgibt es die Startposition eines Teilstrings innerhalb eines anderen Strings von links nach rechts lesen. In diesem Fall können wir uns jedoch auf die implizite Konvertierung von VBA verlassen, um alles größer als 0 als True zu bewerten, da es in einer If-Anweisung verwendet wird.

+0

Genau das, danke! – user33484

+0

Nur eine zusätzliche Frage, wenn ich sagen wollte, das dritte Element in einem Array - wie würde ich das tun? – user33484

+0

Angenommen, Sie haben das Array einer Variablen zugewiesen: 'MsgBox list (2)' (Arrays sind standardmäßig in VBA nullbasiert, also ist 2 eigentlich das dritte Element) –