Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1556to1560
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Nach Schleife für Zahl Vergleich nur eine MSG-Box?

Nach Schleife für Zahl Vergleich nur eine MSG-Box?
23.05.2017 08:35:44
Carsten
Guten Morgen,
ich hab mal ne Frage und zwar hab ich mir ne Abfrage gebastelt welche eingescannte Zahlen mit Soll-Werten Vergleicht und wenn ein Teil dieser Zahl nicht passt wird mir das ganze in einer MSG-Box ausgegeben nach dem Schema

  • Fehler in Zahl: x=1-8...
    ...........................Soll.......Ist.........Fehlername
    Fehlerbezeichnung1..........1..........1..............-
    Fehlerbezeichnung2..........1..........1..............-
    Fehlerbezeichnung3..........1..........2...........Fehler3
    Fehlerbezeichnung4..........1..........1..............-
    Fehlerbezeichnung5..........1..........1..............-

  • Private Sub CB_OK_Click()
    Dim varLL, Fehler, Fehler0, Fehler1, Fehler2, Fehler3, Fehler4 As String, wb As Workbook, i As Integer
    Dim a, b, c, d, e, f, g, h, r, j, z, varFF As String
    '------------------------In der Aktiven Arbeitsmappe den Sollwert holen und dann ihn mit dem Scannerwert vergleichen (12-Stellen von Rechts)---------------------------------
    With ActiveWorkbook
    varLL = .Sheets("Eingabe").Range("L4")
    For i = 1 To 8
    If Right(Controls("TextBox" & i + 8), 12) varLL Then
    Fehler = Fehler & " - " & i
    '-----------Würde auch Funktionieren mit Farbe, aber nicht notwendig wird noch geprüft If : Controls("TextBox" & i + 8).Text i & varLL Then Fehler = Fehler & " - " & i---
    End If
    Next
    '--------------------------------------------------------Wenn kein Fehler auftritt, dann Werte in Tabelle Schreiben und OK geben---------------------------------------------
    If Fehler = "" Then
    For i = 1 To 8
    .Worksheets("EINGABE").Range("N" & i + 3) = Controls("TextBox" & i + 8).Text
    Next
    MsgBox "Kein Fehler!"
    End
    Else
    '------------------------Sollte mind. einer der Werte nicht übereinstimmen werden die Werte in die Tabelle geschrieben und dann die Fehlersuche Prozedur gestartet!----------
    For i = 1 To 8
    .Worksheets("EINGABE").Range("N" & i + 3) = Controls("TextBox" & i + 8).Text
    Next
    '----------Fehler zurücksetzen da sonst nach dem Ersten fehler der Wert nie leer ist und so immer die Fehler MSG-Box angezeigt wird und der Fehler im Speicher bleibt--------
    For z = 1 To 8
    Fehler0 = ""
    Fehler1 = ""
    Fehler2 = ""
    Fehler3 = ""
    Fehler4 = ""
    With ActiveWorkbook
    '--------------------------------ISTWERT - BEFINDET SICH IN N4-11 (Wurde durch vorherige Schritte eingefügt) also 8 WERTE die immer 13 Stellen haben!------------------------
    varFF = .Sheets("Eingabe").Range("N" & z + 3)
    a = Mid(varFF, 1, 1)
    b = Mid(varFF, 2, 6)
    c = Mid(varFF, 8, 2)
    d = Mid(varFF, 10, 2)
    e = Mid(varFF, 12, 2)
    '----------------------------------------------------------------SOLLWERT - FESTE POSITION! ---------------------------------------------------------------------------------
    varLL = .Sheets("Eingabe").Range("L4")
    f = Mid(varLL, 1, 6)
    g = Mid(varLL, 7, 2)
    h = Mid(varLL, 9, 2)
    r = Mid(varLL, 11, 2)
    j = .Sheets("Eingabe").Range("M" & z + 3)
    End With
    '------------------------------------------------------Abfragen der Übereinstimmung der einzelnen Teile der aufgesplitteten Werte--------------------------------------------
    If j a Then
    Fehler0 = "Fehler0"
    End If
    If b f Then
    Fehler1 = "Fehler1"
    End If
    If c g Then
    Fehler2 = "Fehler2"
    End If
    If d h Then
    Fehler3 = "Fehler3"
    End If
    If e r Then
    Fehler4 = "Fehler4"
    End If
    '--------------------------------------------------------------------Ausgabe in MSG-Box----------------------------------------------------------------------------------------
    If Fehler0 = "" And Fehler1 = "" And Fehler2 = "" And Fehler3 = "" And Fehler4 = "" Then
    MsgBox "Alles Richtig, Freigabe!" & vbLf & vbLf _
    & vbTab & vbTab & "Soll" & vbTab & vbTab & "Ist" & vbTab & vbTab & "Fehler" & vbLf _
    & "Fehler0: " & vbTab & vbTab & f & vbTab & vbTab & b & vbTab & vbTab & " -" & vbLf _
    & "Fehler1: " & vbTab & vbTab & g & vbTab & vbTab & c & vbTab & vbTab & " -" & vbLf _
    & "Fehler2: " & vbTab & vbTab & h & vbTab & vbTab & d & vbTab & vbTab & " -" & vbLf _
    & "Fehler3: " & vbTab & z & vbTab & vbTab & a & vbTab & vbTab & " -" & vbLf _
    & "Fehler4: " & vbTab & vbTab & r & vbTab & vbTab & e & vbTab & vbTab & " -" & vbLf
    Else
    MsgBox "Fehler in " & "Eintrag: " & z & vbLf _
    & vbTab & vbTab & "Soll" & vbTab & vbTab & "Ist" & vbTab & vbTab & "Fehler" & vbLf _
    & "Fehler0: " & vbTab & vbTab & f & vbTab & vbTab & b & vbTab & vbTab & Fehler1 & vbLf _
    & "Fehler1: " & vbTab & vbTab & g & vbTab & vbTab & c & vbTab & vbTab & Fehler2 & vbLf _
    & "Fehler2: " & vbTab & vbTab & h & vbTab & vbTab & d & vbTab & vbTab & Fehler3 & vbLf _
    & "Fehler3: " & vbTab & z & vbTab & vbTab & a & vbTab & vbTab & Fehler0 & vbLf _
    & "Fehler4: " & vbTab & vbTab & r & vbTab & vbTab & e & vbTab & vbTab & Fehler4 & vbLf
    End If
    Next z

  • 5
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Nach Schleife für Zahl Vergleich nur eine MSG-Box?
    23.05.2017 08:37:40
    Carsten
    Oh ganz vergessen zu schreiben was ich Versuche... also nach diesem Schema werden mir 8x hintereinander MSG-Boxen angezeigt welcher Teil der Zahl Falsch bzw. Richtig sind... kann man die irgendwie Untereinander in eine MSG-Box packen?
    also das sie z.b. 8x Untereinander stehen oder so?
    AW: Nach Schleife für Zahl Vergleich nur eine MSG-Box?
    23.05.2017 09:41:51
    yummi
    Hallo Carsten
    Du könntest Dir eine Variable schaffen strMsgInhalt as string.
    an den Stellen wo Du die msg Box ausgibst, machst du stattdessen strMsgInhalt = strMsgInhalt & vbCrLf & anstatt MsgBox.
    also so
    
    strmsgInhalt = strmsgInhalt & vbCrLf & "Alles Richtig, Freigabe!" & vbLf & vbLf _
    & vbTab & vbTab & "Soll" & vbTab & vbTab & "Ist" & vbTab & vbTab & "Fehler" & vbLf _
    & "Fehler0: " & vbTab & vbTab & f & vbTab & vbTab & b & vbTab & vbTab & " -" & vbLf _
    & "Fehler1: " & vbTab & vbTab & g & vbTab & vbTab & c & vbTab & vbTab & " -" & vbLf _
    & "Fehler2: " & vbTab & vbTab & h & vbTab & vbTab & d & vbTab & vbTab & " -" & vbLf _
    & "Fehler3: " & vbTab & z & vbTab & vbTab & a & vbTab & vbTab & " -" & vbLf _
    & "Fehler4: " & vbTab & vbTab & r & vbTab & vbTab & e & vbTab & vbTab & " -" & vbLf
    

    an den anderen Ste4llen entsprechend.
    Dann nach deiern for Schleife:
    
    next z
    MsgBox strMsgInhalt
    
    Gruß
    yummi
    Anzeige
    AW: Nach Schleife für Zahl Vergleich nur eine MSG-Box?
    23.05.2017 11:06:13
    Carsten
    Vielen Dank hat geklappt.
    Allerdings ist mir jetzt Aufgefallen das der Text zu lang ist für eine MSG-Box..:(
    Kann ich strMsgInhalt irgendwie als inhalt einer Userform (in einem Textfeld) ausgeben lassen meine Idee war es, anstatt
    next z
    MsgBox strMsgInhalt
    
    Eine UserForm4 (Name egal)
    next z
    UserForm4.show
    
    Und da dann eine Textbox erstellen die ich beim Laden der UF (weiß aber nicht wie) oder über einen Button mit dem Ergebnis von strMsgInhalt befüllen lasse.
    Meine Idee:
    Private Sub CommandButton1_Click()
    Set frm = UserForm4
    With frm
    .TextBox1.Value = strMsgInhalt
    End With
    End Sub
    
    Kommt nur nichts an :(
    Anzeige
    AW: Nach Schleife für Zahl Vergleich nur eine MSG-Box?
    23.05.2017 11:13:46
    yummi
    Hallo Carsten,
    Du musst strMsgInhalt als globale Variable deklarieren (ausserhalb der Funktionen und Subs
    Public strMsgInhalt as string
    Da wo du die MsgBox jetzt aufrufst kommt Userform1.show
    In die Initialize der Userform kommt dann me.textbox1.text = strMsgInhalt
    Du kannst aber auch die gesamte meldung in eine zelle schreiben auf einem Datenblatt, mal so als Idee.
    Gruß
    yummi
    AW: Nach Schleife für Zahl Vergleich nur eine MSG-Box?
    23.05.2017 11:57:35
    Carsten
    Habs jetzt erst in eine Zelle ausgeben lassen und dann in ne Textbox einlesen lassen damit es schöner Dargestellt wird
    vielen Dank:)

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige