Datenabgleich Formular VBA
30.09.2023 13:28:06
marie_excel
ich habe ein Formular mit 13 Textboxen gebaut, welche jeweils mit einem Wert in einem Arbeitsblatt abgeglichen werden sollen. Wenn dieser Wert nicht übereinstimmt, soll eine Fehlermeldung ausgegeben werden. In Textbox 1 wird die SKU Nummer eingegeben, die anderen Textboxen sind zu prüfende Daten die mit der SKU Nummer in Verbindung stehen und in Arbeitsblatt "Artikelstückliste" stehen. Die SKU Nummer steht im AB Artikelstückliste immer in Zeile 2, die abzugleichenden Werte jeweils in den 26 Zellen darunter. Es sind nur einige der Daten für mich relevant. Ich habe versucht, den Abgleich direkt über dieses AB (Arbeitsblatt) zu machen, bin jedoch daran gescheitert - wenn jemand einen Vorschlag hat, ich wäre sehr dankbar-.
Als Vereinfachung habe ich mir im AB SKU Wechsel einen WVerweis gebaut, der die entsprechenden Daten in Spalte G ausgibt.
Nun versuche ich über folgenden Code meine Textboxen, bzw. die Eingaben mit diesen Daten abzugleichen und bei Nicht-Übereinstimmung die Fehlermeldung auszugeben. Leider klappt das nicht so ganz... Hier mein Code:
PS: es wäre fabulös, wenn die Textboxen ausgeblendet werden könnten, sofern in der refenzierten Zelle eine 0 steht...
Ich danke euch vorab und hoffe, dass meine Erklärung einigermaßen verständlich ist...
Ein schönes Wochenende euch allen! :)
Private Sub SKUTextBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim SKUWechsel As Worksheet
Dim SKUWert As Variant
Dim TextBoxWert As Variant
Dim Zeile As Integer
Dim TextBoxName As String
' Arbeitsblatt "SKU Wechsel" referenzieren
Set SKUWechsel = ThisWorkbook.Sheets("SKU Wechsel")
' Ermitteln der Zeile für die entsprechende TextBox
Select Case ActiveControl.Name
Case "TextBox2"
Zeile = 2
TextBoxName = "TextBox2"
Case "TextBox3"
Zeile = 3
TextBoxName = "TextBox3"
Case "TextBox4"
Zeile = 10
TextBoxName = "TextBox4"
Case "TextBox5"
Zeile = 11
TextBoxName = "TextBox5"
Case "TextBox6"
Zeile = 12
TextBoxName = "TextBox6"
Case "TextBox7"
Zeile = 14
TextBoxName = "TextBox7"
Case "TextBox8"
Zeile = 15
TextBoxName = "TextBox8"
Case "TextBox9"
Zeile = 17
TextBoxName = "TextBox9"
Case "TextBox10"
Zeile = 18
TextBoxName = "TextBox10"
Case "TextBox11"
Zeile = 20
TextBoxName = "TextBox11"
Case "TextBox12"
Zeile = 21
TextBoxName = "TextBox12"
Case "TextBox13"
Zeile = 26
TextBoxName = "TextBox13"
Case Else
Exit Sub ' Beenden, wenn unbekannt
End Select
' SKU-Wert aus Zelle G entsprechendr Zeile von "SKU Wechsel" auslesen
SKUWert = SKUWechsel.Cells(Zeile, "G").Value
' Prüfen, ob Enter-Taste gedrückt wurde
If KeyCode = vbKeyReturn Then
' Wert in aktueller TextBox auslesen
TextBoxWert = Me.ActiveControl.Value
' Wert in aktuellerTextBox mit SKU-Wert vergleichen
If IsNumeric(SKUWert) And IsNumeric(TextBoxWert) Then
' Wenn beide Werte numerisch sind, vergleichen Sie sie als numerische Werte
If Val(TextBoxWert) > Val(SKUWert) Then
' Wenn keine Übereinstimmung gefunden wird, Popup-Fenster anzeigen
MsgBox "Achtung, SKU Nummer stimmt nicht überein, bitte umgehend prüfen!", vbExclamation, "Fehler"
End If
ElseIf StrComp(TextBoxWert, SKUWert, vbTextCompare) > 0 Then
' Wenn die Werte nicht gleich sind (nicht numerisch), vergleichen Sie sie als Zeichenketten
' Wenn keine Übereinstimmung gefunden wird, Popup-Fenster anzeigen
MsgBox "Achtung, SKU Nummer stimmt nicht überein, bitte umgehend prüfen!", vbExclamation, "Fehler"
End If
End If
End Sub