VBA: Übergabe mehrerer Werte Instr
Nun habe ich eine lange Liste von "Industrie" - Werte, dass der Benutzer durch ein Formular abgeschickt. Ich habe ein makro geschrieben, dass die Suche nach bestimmten Begriffen in diese Werte und die Werte einfügen, die konform zu meinem deutlich kleineren Liste der "akzeptablen" Industrie-Werte. Der Punkt ist, reclassify alle aktuellen Industrie-Werte, die die Benutzer abgegeben haben, in meine bestehende Taxonomie. Hier ist übrigens mein Wenn-Dann-Aussagen, die Aussehen, als jetzt:
If InStr(1, Cells(i, "A").Value, "Energy") > 0 Or InStr(1, Cells(i, "A").Value, "Electricity") > 0 Or InStr(1, Cells(i, "A").Value, "Gas") > 0 Or InStr(1, Cells(i, "A").Value, "Utilit") > 0 Then
Cells(i, "B").Value = "Energy & Utilities"
End If
Es ist ziemlich hässlich. Funktioniert perfekt in Ordnung, aber ist ein Bär zu Lesen. Mein makro ist übersät mit diesen kaum verständlichen Wenn-Dann-Aussagen, und es ist schwierig, über alles Lesen. Gibt es eine Möglichkeit, mehrere Werte übergeben, um die "String2" argument Instr
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
[Auf Bearbeiten: modifizierte ich die Funktion so, dass, wenn das Letzte argument ist eine Ganzzahl, es spielt die Rolle des
compareMode
parameter inInstr
(0 für " case-sensitive Suche, das ist der Standard und 1 für die groß-und Kleinschreibung). Als Letzte zu optimieren, könnte man auch einen booleschen Wert übergeben, anstatt ein integer für das optionale Letzte argument, mitTrue
entsprechenden groß- /Kleinschreibung undFalse
entsprechend der default case-sensitive]Wenn Sie tun, diese Art der Sache, viele macht es Sinn, eine Funktion schreiben, die ähnlich
inStr
aber in der Lage mehrere Muster.ParamArray
ist ein natürliches Werkzeug zu verwenden:Getestet wie:
Ausgabe:
Gibt es keine Möglichkeit, mehrere Parameter übergeben zu InStr, aber Sie können erstellen Sie Ihre eigenen sub, der es anfaßt. Ich würde einen Unterordner erstellen, die den string zu suchen und in ein array von Zeichenfolgen zu suchen. Es könnte in einer Schleife über das array und call-Befehle für jeden string. Haben Sie wieder ein endgültiges Ergebnis, ob es alle von Ihnen gefunden wird oder nicht, und dann ersetzen Sie alle Ihre hässliche bedingte Anweisungen mit einem Aufruf deiner sub.