Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Textbox Inhalt vergleichen mit Wert aus Zelle und.

Textbox Inhalt vergleichen mit Wert aus Zelle und.
25.04.2017 12:30:22
Carsten
Hallo zusammen ich bin neu hier und eigne mir gerade ein bisschen VBA an um bei meiner Bachelor Thesis ein wenig schneller vorran zu kommen. :)
  • 
    Private Sub CB_OK_Click()
    If TextBox1.Text = Sheets("Eingabe").Range("L4") And TextBox2.Text = Sheets("Eingabe").Range("  _
    _
    L4") And TextBox3.Text = Sheets("Eingabe").Range("L4") And TextBox4.Text = Sheets("Eingabe"). _
    Range("L4") And TextBox5.Text = Sheets("Eingabe").Range("L4") And TextBox6.Text
    = Sheets("Eingabe").Range("L4") And TextBox7.Text = Sheets("Eingabe").Range("L4") And TextBox8. _
    Text = Sheets("Eingabe").Range("L4") Then
    Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N4"). _
    Value = TextBox1
    Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N5"). _
    Value = TextBox2
    Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N6"). _
    Value = TextBox3
    Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N7"). _
    Value = TextBox4
    Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N8"). _
    Value = TextBox5
    Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N9"). _
    Value = TextBox6
    Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N10"). _
    Value = TextBox7
    Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N11"). _
    Value = TextBox8
    End
    Else
    ScannerAbfrage.Show vbModeless
    MsgBox "Falsche Gegenstände!"
    Unload Me
    ScannerAbfrage.Show vbModeless
    'Start in der If-Schleife also Eingabeüberprüfung => wenn ok dann end
    End If
    End Sub
    

  • Also soweit läuft alles Top, allerdings bekomme ich natürlich nur die Meldung das Falsche Gegenstände vorhanden sind ich fände es allerdings prima wenn mir die Meldung ausgibt welche der Textboxen betroffen sind. Also ungleich des Inhaltes der Zelle L4. (z.B. Textbox1 und Textbox2 sind falsch - Der Rest OK!)
    Ist das möglich? Ich hätte gedacht wenn ich mehrere If funktionen hintereinander setze, allerdings klappt das irgendwie nicht so. :(
    Vielen dank schonmal!:)
    Anzeige

    9
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Textbox Inhalt vergleichen mit Wert aus Zelle und.
    25.04.2017 12:49:59
    yummi
    Hallo Carsten,
    so in der Art:
    
    Private Sub CB_OK_Click()
    dim msgstr as string
    If   TextBox1.Text = Sheets("Eingabe").Range("L4")_
    And TextBox2.Text = Sheets("Eingabe").Range("L4")_
    And TextBox3.Text = Sheets("Eingabe").Range("L4")_
    And TextBox4.Text = Sheets("Eingabe").Range("L4")_
    And TextBox5.Text = Sheets("Eingabe").Range("L4")_
    And TextBox6.Text = Sheets("Eingabe").Range("L4")_
    And TextBox7.Text = Sheets("Eingabe").Range("L4")_
    And TextBox8.Text = Sheets("Eingabe").Range("L4") Then
    Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N4").Value = TextBox1
    Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N5").Value = TextBox2
    Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N6").Value = TextBox3
    Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N7").Value = TextBox4
    Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N8").Value = TextBox5
    Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N9").Value = TextBox6
    Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N10").Value = TextBox7
    Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N11").Value = TextBox8
    End
    Else
    msgstr = "Falsche Gegenstände!" &vbcrLf
    If TextBox1.Text  Sheets("Eingabe").Range("L4") then
    msgstr = msgstr & "Textbox1" &vbcrLF
    end if
    if TextBox2.Text = Sheets("Eingabe").Range("L4") then
    end if
    'usw
    ScannerAbfrage.Show vbModeless
    MsgBox "Falsche Gegenstände!"
    Unload Me
    ScannerAbfrage.Show vbModeless
    'Start in der If-Schleife also Eingabeüberprüfung => wenn ok dann end
    End If
    End Sub
    
    Gruß
    yummi
    Anzeige
    AW: Textbox Inhalt vergleichen mit Wert aus Zelle und.
    25.04.2017 12:52:49
    ChrisL
    Hi Carsten
    Vielleicht so...
    Private Sub CB_OK_Click()
    Dim i As Byte, strCheck As String
    For i = 1 To 8
    If Controls("TextBox" & i)  Worksheets("EINGABE").Range("L4") Then _
    strCheck = strCheck & Chr(10) & "TextBox" & i
    Next i
    If strCheck = "" Then
    ' Übertrag
    Else
    MsgBox "Folgende Felder enthalten Fehler:" & strCheck
    End If
    End Sub
    
    cu
    Chris
    Anzeige
    AW: Textbox Inhalt vergleichen mit Wert aus Zelle und.
    25.04.2017 13:01:56
    Carsten
    Ok vielen Dank euch ich habs jetzt so hinbekommen:
  • 
    Private Sub CB_OK_Click()
    If TextBox1.Text = Sheets("Eingabe").Range("L4") Then
    Workbooks("Beispielablauf_Fassungswechsel.xlsm").Worksheets("EINGABE").Range("N4"). _
    Value = TextBox1
    Else
    ScannerAbfrage.Show vbModeless
    'MsgBox "Mindestens ein Barcode fehlerhaft! (unter 12-Stellen)"
    MsgBox "Falsche Platten!1"
    'Unload Me
    ScannerAbfrage.Show vbModeless
    'Start in der If-Schleife also Eingabeüberprüfung => wenn ok dann end
    End If
    If TextBox2.Text = Sheets("Eingabe").Range("L4") Then
    Workbooks("Beispielablauf_Fassungswechsel.xlsm").Worksheets("EINGABE").Range("N5"). _
    Value = TextBox2
    Else
    ScannerAbfrage.Show vbModeless
    'MsgBox "Mindestens ein Barcode fehlerhaft! (unter 12-Stellen)"
    MsgBox "Falsche Platten!2"
    'Unload Me
    ScannerAbfrage.Show vbModeless
    'Start in der If-Schleife also Eingabeüberprüfung => wenn ok dann end
    End If
    If TextBox3.Text = Sheets("Eingabe").Range("L4") Then
    Workbooks("Beispielablauf_Fassungswechsel.xlsm").Worksheets("EINGABE").Range("N6"). _
    Value = TextBox3
    Else
    ScannerAbfrage.Show vbModeless
    'MsgBox "Mindestens ein Barcode fehlerhaft! (unter 12-Stellen)"
    MsgBox "Falsche Platten!3"
    'Unload Me
    ScannerAbfrage.Show vbModeless
    'Start in der If-Schleife also Eingabeüberprüfung => wenn ok dann end
    End If
    If TextBox4.Text = Sheets("Eingabe").Range("L4") Then
    Workbooks("Beispielablauf_Fassungswechsel.xlsm").Worksheets("EINGABE").Range("N7"). _
    Value = TextBox4
    Else
    ScannerAbfrage.Show vbModeless
    'MsgBox "Mindestens ein Barcode fehlerhaft! (unter 12-Stellen)"
    MsgBox "Falsche Platten!4"
    'Unload Me
    ScannerAbfrage.Show vbModeless
    'Start in der If-Schleife also Eingabeüberprüfung => wenn ok dann end
    End If
    If TextBox5.Text = Sheets("Eingabe").Range("L4") Then
    Workbooks("Beispielablauf_Fassungswechsel.xlsm").Worksheets("EINGABE").Range("N8"). _
    Value = TextBox5
    Else
    ScannerAbfrage.Show vbModeless
    'MsgBox "Mindestens ein Barcode fehlerhaft! (unter 12-Stellen)"
    MsgBox "Falsche Platten!5"
    'Unload Me
    ScannerAbfrage.Show vbModeless
    'Start in der If-Schleife also Eingabeüberprüfung => wenn ok dann end
    End If
    If TextBox6.Text = Sheets("Eingabe").Range("L4") Then
    Workbooks("Beispielablauf_Fassungswechsel.xlsm").Worksheets("EINGABE").Range("N9"). _
    Value = TextBox6
    Else
    ScannerAbfrage.Show vbModeless
    'MsgBox "Mindestens ein Barcode fehlerhaft! (unter 12-Stellen)"
    MsgBox "Falsche Platten!6"
    'Unload Me
    ScannerAbfrage.Show vbModeless
    'Start in der If-Schleife also Eingabeüberprüfung => wenn ok dann end
    End If
    If TextBox7.Text = Sheets("Eingabe").Range("L4") Then
    Workbooks("Beispielablauf_Fassungswechsel.xlsm").Worksheets("EINGABE").Range("N10"). _
    Value = TextBox7
    Else
    ScannerAbfrage.Show vbModeless
    'MsgBox "Mindestens ein Barcode fehlerhaft! (unter 12-Stellen)"
    MsgBox "Falsche Platten!7"
    'Unload Me
    ScannerAbfrage.Show vbModeless
    'Start in der If-Schleife also Eingabeüberprüfung => wenn ok dann end
    End If
    If TextBox8.Text = Sheets("Eingabe").Range("L4") Then
    Workbooks("Beispielablauf_Fassungswechsel.xlsm").Worksheets("EINGABE").Range("N11"). _
    Value = TextBox8
    Else
    ScannerAbfrage.Show vbModeless
    'MsgBox "Mindestens ein Barcode fehlerhaft! (unter 12-Stellen)"
    MsgBox "Falsche Platten!8"
    'Unload Me
    ScannerAbfrage.Show vbModeless
    'Start in der If-Schleife also Eingabeüberprüfung => wenn ok dann end
    End If
    End
    End Sub
    

  • Nicht die schönste Lösung aber geht so halbwegs. Kommen halt alle Msgboxes nacheinander das ist nicht so nett aber schaue mir jetzt mal eure Ideen an, vielen Dank!:)
    Anzeige
    AW: Textbox Inhalt vergleichen mit Wert aus Zelle und.
    25.04.2017 13:10:27
    ChrisL
    Hi Carsten
    Den Code kann ich so nicht stehen lassen ;)
    Gekürzt:
    Private Sub CB_OK_Click()
    Dim i As Byte
    With ThisWorkbook.Worksheets("EINGABE")
    For i = 1 To 8
    If Controls("TextBox" & i).Text = .Range("L4") Then
    .Range("N4").Value = Controls("TextBox" & i)
    Else
    MsgBox "Falsche Platten!" & i
    End If
    Next i
    End With
    End Sub
    

    Folgendes konnte ich nicht klar einordnen (warum wird der Befehl wiederholt):
    ScannerAbfrage.Show vbModeless
    cu
    Chris
    Anzeige
    AW: Textbox Inhalt vergleichen mit Wert aus Zelle und.
    25.04.2017 13:18:15
    Carsten
    Prima ich danke dir! Echt super das einem hier direkt geholfen wird :) also das war nen denkfehler mit dem Show aber im Prinzip wollte ich das der Scan vorgang direkt wiederholt werden sollte.
    Aber habe es jetzt so hinbekommen mit eurer hilfe! Jetzt sagt er mir immer schön an welche Position falsch ist etc. das war mein Ziel :)
    Anzeige
    AW: Textbox Inhalt vergleichen mit Wert aus Zelle und.
    25.04.2017 13:24:24
    UweD
    Hallo
    so?
    
    Private Sub CommandButton1_Click()
    Dim varLL, Fehler As String, WB As Workbook, i As Integer
    With ActiveWorkbook
    varLL = .Sheets("Eingabe").Range("L4")
    For i = 1 To 8
    If Controls("TextBox" & i).Text  varLL Then Fehler = Fehler & "TB" & i & ", "
    Next
    If Fehler = "" Then
    For i = 1 To 8
    .Worksheets("EINGABE").Range("N" & i + 3) = Controls("TextBox" & i).Text
    Next
    Else
    ScannerAbfrage.Show vbModeless
    MsgBox "Falsche Gegenstände! in " & Fehler
    Unload Me
    ScannerAbfrage.Show vbModeless
    'Start in der If-Schleife also Eingabeüberprüfung => wenn ok dann end
    End If
    End With
    End Sub
    

    Anzeige
    AW: Textbox Inhalt vergleichen mit Wert aus Zelle und.
    25.04.2017 13:32:02
    Carsten
    Wahnsinn. Klappt prima, wird ja immer kürzer der Code.. also da muss ich noch einiges lernen, aber bin ja auch erst ne Woche dabei aber macht schon Spass das ganze!:)
    AW: Textbox Inhalt vergleichen mit Wert aus Zelle und.
    25.04.2017 13:27:45
    Carsten
    So das fertige Ergebnis sieht jetzt so aus:
  • 
    Private Sub CB_OK_Click()
    Dim msgstr As String
    If TextBox1.Text = Sheets("Eingabe").Range("L4") And TextBox2.Text = Sheets("Eingabe").Range(" _
    L4") And TextBox3.Text = Sheets("Eingabe").Range("L4") And TextBox4.Text = Sheets("Eingabe").Range
    ("L4") And TextBox5.Text = Sheets("Eingabe").Range("L4") And TextBox6.Text = Sheets("Eingabe"). _
    Range("L4") And TextBox7.Text = Sheets("Eingabe").Range("L4") And
    TextBox8.Text = Sheets("Eingabe").Range("L4") Then
    Workbooks("Beispielablauf_Fassungswechsel.xlsm").Worksheets("EINGABE").Range("N4"). _
    Value = TextBox1
    Workbooks("Beispielablauf_Fassungswechsel.xlsm").Worksheets("EINGABE").Range("N5"). _
    Value = TextBox2
    Workbooks("Beispielablauf_Fassungswechsel.xlsm").Worksheets("EINGABE").Range("N6"). _
    Value = TextBox3
    Workbooks("Beispielablauf_Fassungswechsel.xlsm").Worksheets("EINGABE").Range("N7"). _
    Value = TextBox4
    Workbooks("Beispielablauf_Fassungswechsel.xlsm").Worksheets("EINGABE").Range("N8"). _
    Value = TextBox5
    Workbooks("Beispielablauf_Fassungswechsel.xlsm").Worksheets("EINGABE").Range("N9"). _
    Value = TextBox6
    Workbooks("Beispielablauf_Fassungswechsel.xlsm").Worksheets("EINGABE").Range("N10"). _
    Value = TextBox7
    Workbooks("Beispielablauf_Fassungswechsel.xlsm").Worksheets("EINGABE").Range("N11"). _
    Value = TextBox8
    End
    Else
    Dim i As Byte, strCheck As String
    For i = 1 To 8
    If Controls("TextBox" & i)  Worksheets("EINGABE").Range("L4") Then _
    strCheck = strCheck & Chr(10) & "Druckplatte: " & i
    Next i
    If strCheck = "" Then
    ' Übertrag
    Else
    MsgBox "Folgende Druckplatten sind falsch:" & strCheck
    End If
    Unload Me
    End If
    End Sub
    

  • Das ganze klappt auch einwandfrei! Danke dafür!
    Jetzt kommt noch eine Sache... und zwar setzt sich der Bezug der Kontrolle aus 4 Zellen zusammen (=VERKETTEN(A1;B1;C1;D1) dabei hat
    A1: 6-Ziffern B1:2-Ziffern C1:2-Ziffern D1:2-Ziffern (also AAAAABBCCDD) so sieht die Zahl dann aus z.B. ist es mögich zu schauen welcher Teil der Zahl bei der zu überprüfenden nicht stimmt?
    Ich habe mir das ganze über
    =TEIL(EINGABE!N4;1;6)=TEIL(EINGABE!N4;7;2)=TEIL(EINGABE!N4;9;2)=TEIL(EINGABE!N4;11;2) gebastelt in Excel und die Zeile dann jeweis mit dem Soll verglichen und so konnte ich sehen welcher Teil falsch ist.
    Kann man das über VBA regeln? Das das in der MsgBox steht?
    Anzeige
    AW: Textbox Inhalt vergleichen mit Wert aus Zelle und.
    25.04.2017 14:26:04
    Carsten
    Ok habe jetzt einfach in der MsgBox ausgabe die Ergebnisse meiner Excel Auswertung angegeben jetzt gibt er mir die Fehlerhaften Teilergebnisse an :)
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Entdecke relevante Threads

    Schau dir verwandte Threads basierend auf dem aktuellen Thema an

    Alle relevanten Threads mit Inhaltsvorschau entdecken
    Anzeige
    Anzeige

    Infobox / Tutorial

    Textbox Inhalt vergleichen mit Zelle in Excel


    Schritt-für-Schritt-Anleitung

    1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.

    2. Füge ein neues UserForm hinzu oder öffne ein vorhandenes UserForm mit mehreren Textboxen.

    3. Füge einen CommandButton hinzu, um die Eingaben zu überprüfen.

    4. Schreibe den folgenden VBA-Code in das Code-Fenster des CommandButtons:

      Private Sub CB_OK_Click()
         Dim strCheck As String
         Dim i As Byte
         Dim msgstr As String
      
         For i = 1 To 8
             If Controls("TextBox" & i).Text <> Sheets("Eingabe").Range("L4") Then
                 strCheck = strCheck & "TextBox" & i & vbCrLf
             End If
         Next i
      
         If strCheck <> "" Then
             MsgBox "Folgende Textboxen sind falsch:" & vbCrLf & strCheck
         Else
             ' Weiterverarbeitung der Daten
             For i = 1 To 8
                 Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N" & (i + 3)).Value = Controls("TextBox" & i).Text
             Next i
         End If
      End Sub
    5. Teste das UserForm und gib verschiedene Werte in die Textboxen ein, um sicherzustellen, dass die Meldung korrekt angezeigt wird.


    Häufige Fehler und Lösungen

    • Fehler: "Falsche Gegenstände!" wird immer angezeigt
      Stelle sicher, dass die Textboxen tatsächlich mit dem Wert in Zelle L4 verglichen werden. Überprüfe, ob der Wert in L4 korrekt ist und keine zusätzlichen Leerzeichen enthält.

    • Fehler: Der Code funktioniert nicht
      Achte darauf, dass alle Textboxen korrekt benannt sind (TextBox1, TextBox2, ... TextBox8) und die Referenzen zu den Sheets und Zellen stimmen.


    Alternative Methoden

    Eine andere Möglichkeit, die Textboxen zu vergleichen, ist die Verwendung von Arrays. Diese Methode kann den Code vereinfachen:

    Private Sub CB_OK_Click()
        Dim textBoxes(1 To 8) As String
        Dim i As Byte
        Dim msgstr As String
    
        For i = 1 To 8
            textBoxes(i) = Controls("TextBox" & i).Text
        Next i
    
        For i = 1 To 8
            If textBoxes(i) <> Sheets("Eingabe").Range("L4") Then
                msgstr = msgstr & "TextBox" & i & vbCrLf
            End If
        Next i
    
        If msgstr <> "" Then
            MsgBox "Folgende Textboxen sind falsch:" & vbCrLf & msgstr
        End If
    End Sub

    Praktische Beispiele

    Hier ein Beispiel, wie du den Inhalt der Textboxen in eine Excel-Tabelle überträgst, wenn sie korrekt sind:

    If strCheck = "" Then
        For i = 1 To 8
            Workbooks("Beispielablauf.xlsm").Worksheets("EINGABE").Range("N" & (i + 3)).Value = Controls("TextBox" & i).Text
        Next i
    Else
        MsgBox "Es sind Fehler aufgetreten!"
    End If

    Tipps für Profis

    • Nutze With-Anweisungen, um den Code leserlicher und effizienter zu gestalten.
    • Verwende Trim()-Funktionen, um sicherzustellen, dass keine unnötigen Leerzeichen in den Eingaben sind: If Trim(TextBox1.Text) = Trim(Sheets("Eingabe").Range("L4")) Then.
    • Teste den Code regelmäßig, um sicherzustellen, dass alle Fälle abgedeckt sind.

    FAQ: Häufige Fragen

    1. Wie kann ich die Eingabe in den Textboxen validieren?
    Du kannst eine zusätzliche Überprüfung vor dem Vergleich hinzufügen, um sicherzustellen, dass die Eingaben nicht leer sind.

    2. Was kann ich tun, wenn ich mehr Textboxen hinzufügen möchte?
    Erweitere einfach die Schleifen und passe die Indizes an. Stelle sicher, dass die neuen Textboxen auch im UserForm vorhanden sind.

    3. Kann ich die Vergleiche auch in einer Excel-Formel durchführen?
    Ja, du kannst die VERGLEICH- oder WENN-Funktion in Excel verwenden, aber für eine interaktive Benutzeroberfläche ist VBA oft die beste Lösung.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Entdecke mehr
    Finde genau, was du suchst

    Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

    Suche nach den besten Antworten
    Unsere beliebtesten Threads

    Entdecke unsere meistgeklickten Beiträge in der Google Suche

    Top 100 Threads jetzt ansehen
    Anzeige