Thema Datum  Von Nutzer Rating
Antwort
Rot Dynamische Variablen für VBA Excel Makro
05.09.2015 18:55:24 Oliver
NotSolved
10.09.2015 14:50:26 BigBen
NotSolved

Ansicht des Beitrags:
Von:
Oliver
Datum:
05.09.2015 18:55:24
Views:
2507
Rating: Antwort:
  Ja
Thema:
Dynamische Variablen für VBA Excel Makro

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.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Dynamische Variablen für VBA Excel Makro
05.09.2015 18:55:24 Oliver
NotSolved
10.09.2015 14:50:26 BigBen
NotSolved