In Teil 1 zum Thema Verzweigungen habe ich dir gezeigt, wie Verzweigungen mit If … Then und mit If … Then … Else in einem Makro realisierbar sind.
Der heutige Teil 2 beschäftigt sich mit Verzweigungen mittels der Funktion CHOOSE und über Select Case.
3. Eine Richtung mit der Funktion CHOOSE wählen
Die Funktion CHOOSE entspricht der Funktion WAHL im deutschsprachigen Excel-Gebiet.
Bei WAHL sind die Argumente der Index sowie bis zu 254 Wertargumente, aus denen mittels des Index gewählt wird. Das Index-Argument könnte demnach maximal 254 lauten.
Ein Beispiel zur Umsetzung der CHOOSE-Funktion in VBA:
Stell dir vor, du hast monatlich je einen Bericht für 4 Werke zu erstellen. In einer Vorauswahl bestimmst du das Werk mit einer Zahl von 1 bis 4. Als Überschrift erhältst du nach dem Makrolauf z.B. den Titel „Bericht für Werk 3“.
Dahinter verbirgt sich dieses Makro:
Sub Auswahl1()
Dim strWahl As String
strWahl=CHOOSE(Range(„B86″).Value,“Bericht für Werk 1″,“Bericht für Werk 2″,“Bericht für Werk 3″,“Bericht für Werk 4“)
Range(„B88“)=strWahl
End Sub
Was geschieht?
Zuerst wird die Variable strWahl deklariert. Dann wird geschrieben, welchen Inhalt die Variable haben soll. Der Inhalt wird schließlich mit der Funktion CHOOSE (=WAHL) in Abhängigkeit des Eintrags in Zelle B86 bestimmt. Die Wertargumente, aus denen CHOOSE auswählt, lauten „Bericht für Werk 1“, „Bericht für Werk 2“ usw.
In B86 steht die 3, es wird also das 3. Wertargument in B88 eingetragen. Zugegeben, ein sehr einfaches Beispiel, das könnte auch ohne Makro erledigt werden.
Na klar, bis hierhin schon. Aber dadurch, dass in B88 jetzt z.B. „Bericht für Werk 3“ steht, könnte ein Makro ausgelöst werden, dass den Bericht für Werk 3 selbständig erstellt, und zwar schneller, als du es manuell könntest.
Betrachte dieses kleine Makro als Startmakro für nachfolgende Prozeduren.
4. Mit Select Case den Weg finden
Eine weitere Möglichkeit, eine Verzweigung mit VBA abzuarbeiten, ist die Methode Select Case. Dazu richte ich wieder ein Auswahlfeld ein, hier in D107.
Mit dem Makro
Sub SelectCase1()
Dim strWahl As String
strWahl=Range(„D107“).Value
Select Case strWahl
Case 1
Range(„F107″)=“Bericht für Werk 1“
Case 2
Range(„F107″)=“Bericht für Werk 2“
Case 3
Range(„F107″)=“Bericht für Werk 3“
Case 4
Range(„F107″)=“Bericht für Werk 4“
End Select
End Sub
wird die Anordnung in D107 umgesetzt. Der Variablen strWahl wird der Inhalt aus D107 zugeteilt. Dann wird der jeweilige Fall herausgesucht, bei 4 ist es „Case 4“. Case 4 weist an, dass in F107 der Text „Bericht für Werk 4“ geschrieben werden soll.
Wird mit einer 3 in D107 Case 3 ausgewählt, wird in F107 „Bericht für Werk 3“ stehen. So einfach ist das.
In einem zweiten Beispiel greife ich mit Select Case auf eine Datentabelle zu.
Darin enthalten sind vier Wertereihen (Spalte F, G, H und I).
Mit einem Auswahlfeld (E131) bestimme ich wieder den Case (den Fall).
Das Makro hierfür könnte dies sein:
Sub SelectCase2()
Dim bytWahl As Byte
bytWahl=Range(„E131“).Value
Select Case bytWahl
Case 1
Cells(133,5).FormulaLocal=“=SUMME(F125:F129)“
Case 2
Cells(133,5).FormulaLocal=“=SUMME(G125:G129)“
Case 3
Cells(133,5).FormulaLocal=“=SUMME(H125:H129)“
Case 4
Cells(133,5).FormulaLocal=“=SUMME(I125:I129)“
End Select
End Sub
Das Makro gibt jetzt vor, dass im Fall einer 4 in E131 die Summe der Werte in I125:I129 zu errechnen und in E133 einzutragen ist.
Nun? Hast du ein wenig Gefallen gefunden an den Verzweigungen in VBA?
Dann programmiere es nach oder besser, suche dir deine eigenen Beispiele und schreibe die entsprechenden Makros. Es macht Spaß.
[1] https://de.wikipedia.org/wiki/Bedingte_Anweisung_und_Verzweigung
Entdecke mehr von Clevercalcul
Subscribe to get the latest posts sent to your email.