Hallo,
eines gleich vorweg. Ich bin was VBA Excel Makros angeht ein ziemlicher Anfänger.
Ich möchte 4 Personengruppen (sagen wir A-D) zu unterschiedlichen Szenarien (z.B. 1,2,3,…) mit einem VBA Makro bewerten. (siehe Bild)

Die notwendigen Daten bekomm ich aus einer Ergebniszeile in einem Logfile. Diese lese ich ein und bewerte sie dann.
Soweit so gut - nun aber das Problem:
Je nachdem mit welchem User ich das Tool, welches dieses Logfile erstellt, ausführe, soll das Bewertungsergebnis in die dafür vorgesehene Spalte in meiner Excelmappe kommen.
Als Beispiel: wenn ich das Logfile erzeugende Tool mit dem User B ausführe, läuft dieses Tool alle Szenarien als User B durch und erzeugt Logfiles pro Szenario. Ich möchte jetzt von meinem Makro, dass es das Logfile beurteilt und das Ergebnis von Szenario 1 und 2 für User B in die Excelfelder D6 & D11 schreibt.
Prinzipiell ist es kein Problem, ein Ergebnis in eine spezielle Zelle zu bekommen, ich möchte nur nicht 4 mal den nahezu gleichen Code schreiben, nur damit die Beurteilung für jeden User in die vorgesehene, korrekte Zelle kommt.
Was funktioniert, jedoch für alle Usergruppen 4 mal den fast identischen Code hätte:
Dim userspalte: userspalte = „C“ ' Festlegen der Spalte in einer Variable
Dim statusspalte: statusspalte = „D“
Dim fehlerspalte: fehlerspalte = „E“
Dim B_user_senznario1: B_user_senznario1= „6“
Dim B_user_senznario2: B_user_senznario2 = „11“
Dim C_user_senznario1: C_user_senznario1= „7“
Dim C_user_senznario2: C_user_senznario2 = „12“
Select Case user
Case „B_user“
If eingelesener_status Like „OK“ Then ' wenn im Logfile der Status OK ist, dann...
Range(statusspalte & B_user_senznario1).Value = „OK” '... schreibe in D6 OK
End If
Case „C_user“
If eingelesener_status Like „OK“ Then
Range(statusspalte & C_user_senznario1).Value = „KO”
Range(fehlerspalte & C_user_senznario1).Value = „User ist nicht berechtigt”
End If
usw. – diese Beurteilungen für User A, B, C, D und jeweils für alle Szenarien
Ich hab dann probiert, ein variables Präfix zu verwenden, dass in einer vorherigen Abfrage entscheidet, welcher User beurteilt werden soll, jedoch ging das nicht (Fehlermeldung in Zeile mit ********, da während der Laufzeit keine neuen Variablen erstellt werden dürfen) – das ist der Code dazu:
wenn User B, dann praefix = „B“
wenn User C, dann praefix = „C“
Select Case user
Case „B_user“
target=praefix & ”_user_senznario1”
If eingelesener_status Like „OK“ Then
Range(statusspalte & target).Value = „OK” ********
End If
Case „C_user“
target=praefix & ”_user_senznario1”
If eingelesener_status Like „OK“ Then
Range(statusspalte & target).Value = „KO”
Range(fehlerspalte & target).Value = „User ist nicht berechtigt”
End If
usw.
Hat jmd. eine Idee, wie man das richtig lösen könnte?
Da eine Beurteilung für viele Szenarien gleich ist, geht es mir darum, dass ich nicht hundert Mal den gleichen Code schreiben muss, nur weil die Variable target nicht dynamisch während der Laufzeit zusammengebaut werden kann.
Vielen Dank schon mal im Voraus.
|