Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
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

Datenabgleich Formular VBA

Datenabgleich Formular VBA
30.09.2023 13:28:06
marie_excel
Hallo zusammen,

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

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

Betreff
Datum
Anwender
Anzeige
nachfrage
30.09.2023 14:45:20
ralf_b
SKUTextBox_KeyDown() ist doch das Event für die SKUTextBox, oder? Und das ist doch nur eine bestimmte Textbox. Wieso prüfst du dann in dem Makro welches Control das Event ausgelöst hat?
AW: nachfrage
01.10.2023 10:23:50
marie_excel
Hallo Ralf,

ja genau, vielen Dank für den Hinweis. Ich habe das mal versucht entsprechend umzuschreiben... Bitte Nachsicht haben, ich bin wirklich sehr frisch dabei...

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

' Arbeitsblatt "SKU Wechsel" referenzieren
Set SKUWechsel = ThisWorkbook.Sheets("SKU Wechsel")

' Ermitteln der Zeile für die entsprechende TextBox
Select Case Me.Name
Case "TextBox2"
Zeile = 2
Case "TextBox3"
Zeile = 3
Case "TextBox4"
Zeile = 10
Case "TextBox5"
Zeile = 11
Case "TextBox6"
Zeile = 12
Case "TextBox7"
Zeile = 14
Case "TextBox8"
Zeile = 15
Case "TextBox9"
Zeile = 17
Case "TextBox10"
Zeile = 18
Case "TextBox11"
Zeile = 20
Case "TextBox12"
Zeile = 21
Case "TextBox13"
Zeile = 26
Case Else
Exit Sub ' Beenden, wenn unbekannte TextBox
End Select

' SKU-Wert aus Zelle G entsprechender Zeile von "SKU Wechsel" auslesen
SKUWert = SKUWechsel.Cells(Zeile, "G").Value

' Wert in aktueller TextBox auslesen
TextBoxWert = Me.Value

' Wert in aktueller TextBox 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 mit "ACHTUNG" 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 mit "ACHTUNG" anzeigen
MsgBox "Achtung, SKU Nummer stimmt nicht überein, bitte umgehend prüfen!", vbExclamation, "Fehler"

End If
End Sub

Anzeige
nachfrage2
01.10.2023 13:10:28
ralf_b
Zitat:"ja genau, vielen Dank für den Hinweis."
Mir scheint die beiden Hinweise sind nicht angekommen.

Da ich aber deinen Dateiaufbau nicht kenne kann ich mir nur was aus meiner Erfahrung zusammenreimen.
Fragen:
1. landet dein Code immer im "select else"-Zweig?
2. was steht im Me.Name wenn der Code läuft?
AW: nachfrage
01.10.2023 23:31:01
onur
Anscheinend liest du nur Antworten, die dir gefallen. WANN glaubst du denn, wird das Makro aktiv?
Noch einmal: Dein Code KANN nicht funktionieren, wie du es gerne hättest. Das gepostete Makro wird aktiviert, wenn der Fokus auf SKUTextBox gesetzt ist und da eine Taste gedrückt wird.
Dabei ist es egal, ob du "Me.Name" oder "ActiveControl.Name" benutzt. ME ist SKUTextBox und ActiveControl ist ebenfalls SKUTextBox, da der Cursor sich ja innerhalb dieser Textbox befindet.
Also kann deine Select Case-Schleife NIE zutreffen....
Aber solange ich aber keine Ahnung habe, was du wirklich erreichen willst, kann ich dir auch nicht helfen.
Anzeige
AW: Datenabgleich Formular VBA
30.09.2023 15:14:58
onur
Keine Ahnung, was der "Code" soll.
ActiveControl ist doch IMMER "SKUTextBox", da du dich im Event dieser Textbox befindest !

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige