Textfeld auswerten

  • Excel

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von jonnyGD.

    Textfeld auswerten

    Hallo zusammen,

    ich stehe gerade vor einem "Übersetzungsproblem".
    Habe bereits Kenntnisse in Java, muss nun allerdings ein Programm in VBA schreiben.Konkret geht es um Folgendes:

    Über einen QR-Code und einen entsprechenden Scanner lese ich einen Zeichenfolge ein.
    Diese besteht aus folgenden Teilen:
    1. Startzeichen (\)
    2. Abschnitt 1 (Zahlen, Leerzeichen, Buchstaben --> Anf. mind. 9 Zeichen)
    3. Trennzeichen (+)
    4. Abschnitt 2 (Buchstaben, Zahlen --> Anf. keine Sonderzeichen)
    5. Trennzeichen (+)
    6. Abschnitt 3 (Zahlen, Leerzeichen, Buchstaben)
    7. Endzeichen (~)

    In Java würde ich diese Zeichenfolge als Array betrachten und mit einer for-Schleife durchlaufen.Zunächst Start- und Endzeichen vergleichen, anschließend die Abschnitte 1, 2 und 3 überprüfen und wenn sie vorhanden sind auch in ein gesondertes Feld ausgeben.
    Sind die Daten korrekt, soll jeweils ein entspr. Feld grün eingefärbt werden, ist alles grün, so soll ein großes grünes Feld eingefärbt werden. Ansonsten rot.

    Die eingelesenen Daten müssen nicht gespeichert werden, das Tool soll durch Abscannen eines „Reset-QR-Codes“ zurückgesetzt werden.

    Die Oberfläche habe ich kreiert, konkret geht es nun um die Umsetzung des Programms in VBA.

    Würde mich sehr freuen, wenn Ihr mir Tipps geben könnt, wie ich diese Logik formulieren kann.

    Beste Grüße und vorab schon mal vielen Dank
    Jonas
    Bilder
    • 170120_ScreenshotTool_JH.JPG

      289,01 kB, 996×815, 124 mal angesehen
    Hallo Jonas,
    das geht über Stringfunktionen. Probier' mal dies:

    Visual Basic-Quellcode

    1. Dim Txt$, i&, Muster$, Abschnitt$()
    2. Txt = TextBox1.Text ' Dein Text
    3. If Left$(Txt, 1) = "\" Then MsgBox "Startzeichen ok"
    4. If Right$(Txt, 1) = "~" Then MsgBox "Endezeichen ok"
    5. Abschnitt = Split(Mid$(Txt, 2, Len(Txt) - 2), "+")
    6. For i = 1 To 3
    7. Muster = Choose(i, "[a-zA-Z0-9 ]", "[a-zA-Z0-9]", "[a-zA-Z0-9 ]")
    8. If Abschnitt(i - 1) Like Replace(Space$(Len(Abschnitt(i - 1))), " ", Muster) Then
    9. MsgBox "Abschnitt " & CStr(i) & " Ok"
    10. Else
    11. MsgBox "Abschnitt " & CStr(i) & " Fehler"
    12. End If
    13. Next i
    Gruss,

    Neptun
    Hallo Neptun,

    zunächst Danke für deine Antwort und sorry für meine späte Antwort.
    War in der letzten Zeit leider im Klausurenstress, da stand das "Hobby" bisschen hinten an.

    Deine Lösung habe ich noch nicht so ganz verstanden bzw. auf meinen bestimmten Fall hin anwenden können:
    - Wie kann ich in VBA Text "einlesen" und als Array speichern?
    - Kann ich Werte dieses Arrays gezielt mit bestimmten Zeichen vergleichen? (bspw. Wert Pos 0 = "\", Wert max.length = "~", Position eines bestimmten Zeichens bswp. "+" merken, Zeichen zwischen Pos 1 und Pos x in einem Feld ausgeben?
    - Wenn für eine Prüfung (bspw. Wert Pos 0 = "\" möchte ich keine Messagebox ausgeben, sondern wie dargestellt ein Kästchen farbig einfärben, geht das?

    Sorry, dass ich so viele Fragen habe, aber bislang leider nicht mit VBA gearbeitet...
    In der Programmierdenkweise bin ich drin, also ich weiß, was ich vom Programm machen lassen will, aber ich bekomm es leider nicht in die Sprache übersetzt. Wenn Ihr mir dazu ein gutes Tutorial habt, immer her damit :)
    Meine Google-Recherche war da bislang leider nicht wirklich ergebnisreich.

    Beste Grüße und danke vorab.
    Jonas