eval (ez_write_tag ([[468,60], „sourcedaddy_com-box-3“, „ezslot_1“, 102, „0“, „0“]); die Select Case-Anweisung
MS-Excel / Allgemeine Formatierung
Durchführen mehrerer Tests mit If … ElseIf ist eine praktische Technik – es ist ein VBA-Tool, das Sie häufig verwenden. Es wird jedoch schnell unhandlich, wenn die Anzahl der Tests, die durchgeführt werden müssen, größer wird. Es ist in Ordnung für zwei oder drei Tests, aber mehr als das macht es schwieriger, der Logik zu folgen.
In diesen Situationen ist die Select Case-Anweisung von VBA die bessere Wahl. Die Idee ist, dass Sie zu Beginn einen logischen Ausdruck bereitstellen und dann eine Reihe möglicher Ergebnisse auflisten. Für jedes mögliche Ergebnis, das als Fall bezeichnet wird, geben Sie eine oder mehrere VBA-Anweisungen zur Ausführung an, falls sich der Fall als wahr erweisen sollte. Hier ist die Syntax:
Select Case TestExpression Case FirstCaseList Case SecondCaseList <etc> Case Else End Select
TestExpression
Dieser Ausdruck wird am Anfang der Struktur ausgewertet muss einen Wert zurückgeben (logisch, numerisch, Zeichenfolge usw.).
CaseList
Eine Liste mit einem oder mehreren möglichen Ergebnissen für TestExpression. Diese Ergebnisse sind durch Kommas getrennte Werte oder Ausdrücke. VBA untersucht jedes Element in der Liste, um zu sehen, ob einer mit dem TestExpression übereinstimmt. Die Ausdrücke können eine der folgenden Formen annehmen:ExpressionExpression To ExpressionIs LogicalOperator ExpressionDas Schlüsselwort To definiert einen Wertebereich (z. B. 1 bis 10). Das Schlüsselwort Is definiert einen offenen Wertebereich (z. B. Is > = 100).
Anweisungen
Dies sind die Anweisungen, die VBA ausführt, wenn ein Teil von Die zugehörige CaseList stimmt mit der TestExpression überein. VBA führt die optionalen ElseStatements aus, wenn keine CaseList eine Übereinstimmung mit der TestExpression enthält.
Hinweis: Wenn mehr als eine CaseList ein übereinstimmendes Element enthält In TestExpression, VBA werden nur die Anweisungen ausgeführt, die der CaseList zugeordnet sind, die zuerst in der Select Case-Struktur angezeigt wird.
Die Liste zeigt, wie Sie Select Case verwenden würden, um das Problem mit dem Frequenzargument zu behandeln.
Eine verwendete Prozedur Fall auswählen, um mehrere Werte zu testen Ein Beispiel für einen ausgewählten Fall: Konvertieren von Testergebnissen in Buchstabennoten
Um Ihnen ein besseres Gefühl für die Anweisung „Fall auswählen“ zu vermitteln, werfen wir einen Blick auf ein anderes Beispiel, das die einzigartigen Talente dieses leistungsstarken Modells besser zur Geltung bringt Struktur. Angenommen, Sie möchten eine Prozedur schreiben, die ein rohes Testergebnis gemäß der folgenden Tabelle in eine Buchstabennote umwandelt:
Raw Score | Briefnote |
90 und älter | A |
Zwischen 80 und 89 | B |
Zwischen 70 und 79 | C |
Zwischen 60 und 69 | D |
Weniger als 60 | F |
Listing zeigt die LetterGrade-Prozedur, die eine Select Case-Anweisung verwendet, um die Konvertierung durchzuführen.
Das rawScore-Argument ist ein ganzzahliger Wert zwischen 0 und 100. Die Select Case-Struktur prüft zunächst, ob rawScore negativ ist. In diesem Fall gibt die Funktion eine Fehlermeldung zurück. Die nächste Case-Anweisung prüft, ob die Punktzahl unter 60 liegt, und die Funktion gibt die Buchstabennote „F“ zurück, falls dies der Fall ist. Die nächste Case-Anweisung sucht nach einer Punktzahl von weniger als 70. Wenn wir so weit kommen, wissen wir bereits (dank der vorhergehenden Case-Aussage), dass die Punktzahl mindestens 60 beträgt. Daher prüft dieser Fall wirklich, ob die Punktzahl stimmt zwischen 60 und 70 (einschließlich 60, aber nicht einschließlich 70). In diesem Fall wird die Buchstabenklasse „D“ zurückgegeben. Die übrigen Case-Aussagen gehen auf die gleiche Weise vor. Die Groß- / Kleinschreibung wird auf eine Punktzahl größer als 100 überprüft und gibt eine weitere Fehlermeldung zurück, wenn dies der Fall ist.
Ein weiteres Beispiel: Zähmen der RGB-Funktion
Sie können die RGB-VBA-Funktion (rot, grün, blau) jederzeit verwenden Geben Sie eine Farbe für eine Eigenschaft an. Jedes der drei genannten Argumente (rot, grün und blau) sind Ganzzahlen zwischen 0 und 255, die bestimmen, wie viel von jeder Komponentenfarbe in die endgültige Farbe gemischt wird. In der roten Komponente bedeutet beispielsweise 0, dass kein Rot vorhanden ist, und 255, dass reines Rot vorhanden ist. Wenn alle drei Werte gleich sind, erhalten Sie einen Grauton.
Hier sind einige Beispielwerte für jede Komponente, die gemeinsame Farben erzeugen:
Rot | Blau | Grün | Ergebnis |
0 | 0 | 0 | Schwarz |
0 | 0 | 255 | Blau |
0 | 255 | 0 | Grün |
0 | 255 | 255 | Cyan |
255 | 0 | 0 | Rot |
255 | 0 | 255 | Margenta |
255 | 255 | 0 | Gelb |
255 | 255 | 255 | Weiß |
Anstatt sich diese Kombinationen zu merken, setzen wir VBA und Select Case zusammen, um die Auswahl der Farben zu vereinfachen zeigt die VBAColor-Funktion, mit der Sie Namen (z. B. „rot“ oder „blau“) anstelle einer kryptischen Taubheit verwenden können Weitere Kombinationen zum Festlegen von 16 der am häufigsten verwendeten Farben.
Eine Funktion, die einen Farbnamen als Zeichenfolge akzeptiert und den entsprechenden RGB-Wert zurückgibt
VBAColor verwendet ein einzelnes Argument, colorName, den Namen der Farbe, die Sie verwenden will mit arbeiten. Beachten Sie, wie die Select Case-Anweisung das Argument massiert, um Fehler zu vermeiden:
Select Case LCase(Trim(colorName))
Die Trim-Funktion entfernt alle überflüssigen Leerzeichen am Anfang und Ende des Arguments, und die LCase-Funktion konvertiert colorName in Kleinbuchstaben. Dadurch wird sichergestellt, dass bei der Funktion nicht zwischen Groß- und Kleinschreibung unterschieden wird. Dies bedeutet, dass es keine Rolle spielt, ob Sie Schwarz, SCHWARZ oder Schwarz senden: Die Funktion funktioniert weiterhin.
Der Rest der Funktion verwendet Case-Anweisungen, um nach dem zu suchen verschiedene Farbnamen und geben Sie den entsprechenden RGB-Wert zurück. Sie können die ColorTester-Prozedur verwenden, um VBAColora Whirl zu geben. Diese Prozedur formatiert nur die Schriftfarbe der aktuell ausgewählten Arbeitsblattzelle.
Hinweis: VBA definiert auch acht Farbkonstanten, die Sie können verwenden, wenn Sie nur die Grundfarben benötigen: vbBlack, vbBlue, vbCyan, vbGreen, vbMagenta, vbRed, vbWhite und vbYellow.