Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Userform doppelte werte auswerten

Forumthread: Userform doppelte werte auswerten

Userform doppelte werte auswerten
11.06.2024 01:10:34
Mehmet
Hallo,
ich wende mich an euch mit der Bitte um Unterstützung bei einem VBA-Problem, das ich derzeit habe. Ich habe eine Userform mit verschiedenen Textboxen und Comboboxen erstellt, die Daten in eine Tabelle mit 12 Spalten überträgt. Mein Ziel ist es, drei bestimmte Spalten auf doppelte Einträge zu überprüfen, bevor neue Daten hinzugefügt werden. Wenn ein Datensatz bereits existiert, der identische Werte in diesen drei Spalten aufweist, sollte eine Warnmeldung angezeigt werden. Andernfalls sollten die neuen Daten hinzugefügt werden können.

Bisher ist es mir nur gelungen, die Daten in einer Spalte zu überprüfen. Die zu überprüfenden Werte befinden sich alle in derselben Zeile. Ist es möglich, eine solche Überprüfung für drei Spalten zu implementieren, und könnt ihr mir dabei behilflich sein?

Ich bin für jede Hilfe sehr dankbar und freue mich auf eure Antwort.
P.S: Bin Anfänger 😊
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform doppelte werte auswerten
11.06.2024 07:04:53
MCO
Guten Morgen!

Dein Ansatz in 1 Spalte die Daten zu überprüfen würde ich weiter verfolgen. Verknüpfe alle 3 Spalten zu 1 String und packe sie in eine unsichtbare Spalte. Jetzt kannst du die Überprüfung wie gewohnt vornehmen.

Gruß, MCO
AW: Userform doppelte werte auswerten
11.06.2024 12:47:25
Firmus
Hallo Mehmet,

SO könnte der Block für die Prüfungen aussehen.

Sub testSpeichern()


Dim Nachricht As String
Dim Ncount As Long

'================================================================================
' Prüfroutinen
'================================================================================
Nachricht = ""
Ncount = 0

If TextBoxBA.Value = "" Or TextBoxEP.Value = "" Or ComboBoxDT.Value = "" Or ComboBoxMT.Value = "" Or ComboBoxFG.Value = "" Or ComboBoxFE.Value = "" Or ComboBoxP.Value = "" Or ComboBoxBLDC.Value = "" Or ComboBoxKW.Value = "" Then
MsgBox "Bitte fülle alle Pflichtelder mit* aus!", , ""
Exit Sub
End If

If Application.CountIf(Sheets("Liste").Range("f11:f5000"), TextBoxSNRD) > 0 Then
Nachricht = Nachricht & "Die Seriennummer RD ist schon vorhanden!" & Chr(13) & Chr(10)
Ncount = Ncount + 1
End If

If Application.CountIf(Sheets("Liste").Range("g11:g5000"), TextBoxSNMT) > 0 Then
Nachricht = Nachricht & "Die Seriennummer Motor ist schon vorhanden!" & Chr(13) & Chr(10)
Ncount = Ncount + 1
End If

If Application.CountIf(Sheets("Liste").Range("H11:H5000"), TextBoxXYZ) > 0 Then
Nachricht = Nachricht & "Die Seriennummer XYZ ist schon vorhanden!" & Chr(13) & Chr(10)
Ncount = Ncount + 1
End If

If Ncount > 0 Then
Nachricht = "Bitte korrigieren. Makro wird beendet." & Chr(13) & Chr(10) & Chr(13) & Chr(10) & Nachricht
Nachricht = "Es sind Fehler aufgetreten, siehe Dateils hier. " & Chr(13) & Chr(10) & Nachricht
MsgBox Nachricht, vbExclamation
Exit Sub
End If
Nachricht = ""
Ncount = 0

'================================================================================
' Verarbeitung der EingabenPrüfroutinen
'================================================================================
'Daten ins Tabellenblatt eintragen
Dim neuezeile As Long


Es ist für Leute, die helfen, VIEL einfacher und zeitsparend, wenn eine XLS/XLSM als Beispiel hochgeladen wird.
Natürlich nur mit wenigen, anonymen Daten. Die sollten aber das Problem nachvollziehbar machen.


Viel Erfolg.
Gruß,
Firmus
Anzeige
AW: Userform doppelte werte auswerten
11.06.2024 20:40:55
Alwin Weisangler
Hallo Mehmet,

MCO hatte dir schon den passenden Hinweis für dein Problem gegeben (String zusammensetzen).
Es geht natürlich auch ohne Hilfsspalte. Sowas kann man in einer kleinen Schleife abfragen:


Dim i&
With Sheets("Liste")
For i = 1 To .Cells(Rows.Count, 4).End(xlUp).Row
If .Cells(i, 4) & .Cells(i, 6) & .Cells(i, 7) = ComboBoxDT & TextBoxSNRD & TextBoxSNMT Then
MsgBox "Diese Kombi existiert bereits"
End If
Next i
End With


Gruß Uwe
Anzeige
AW: Userform doppelte werte auswerten
12.06.2024 00:26:11
simsek69
Hallo Uwe,

echt super... Danke dir und allen die mir geholfen haben. Es funktioniert jetzt genau wie ich es haben wollte.
Herzlichen DANK an alle....
AW: Userform doppelte werte auswerten
11.06.2024 13:08:22
simsek
Hallo Firmus,

herzlichen Dank für dein Beispiel. Habe es sofort eingesetzt und es angepasst. Es Prüft schrit für schritt die 3 werte ab was richtig ist. Aber es sollte nur die werte nicht aktzeptieren wenn alle drei werte gleich sind, sobald ein wert unterschied aufweisst ( im userform) als was schon in der Tabelle eingetragen ist soll es speichern.
Wie gesagt nur wenn die eingegebenen werte identisch wie in tabelle soll verweigert werden sonst nicht.

Danke dir nochmals es ist mir schon eine große hilfe...
Anzeige
AW: Userform doppelte werte auswerten
11.06.2024 13:47:44
Firmus
Hallo Mehmet,

Aber es sollte nur die werte nicht akzeptieren wenn alle drei werte gleich sind, sobald ein wert unterschied aufweisst ( im userform) als was schon in der Tabelle eingetragen ist soll es speichern.

1. Mit "gleich sind" meinst du "gleich mit den Werten in der jeweils vorhanden Liste"? Ja/Nein
2. Es soll nicht geprüft werden, ob die drei eingegebenen Werte untereinander gleich sind? Ja/Nein

Falls 1. = Ja und 2. = Ja sind, so brauchst du nur eine Stelle in der Logik verändern.
Ersetze If Ncount > 0 Then
durch If Ncount = 3 Then

Gruß,
Firmus
Anzeige
AW: Userform doppelte werte auswerten
11.06.2024 15:12:01
simsek
Hallo Firmus,

Wie du beschrieben hast "Aber es sollte nur die werte nicht akzeptieren wenn alle drei werte gleich sind, sobald ein wert unterschied aufweisst ( im userform) als was schon in der Tabelle eingetragen ist soll es speichern.

1. Mit "gleich sind" meinst du "gleich mit den Werten in der jeweils vorhanden Liste"? Ja/Nein
2. Es soll nicht geprüft werden, ob die drei eingegebenen Werte untereinander gleich sind? Ja/Nein

Falls 1. = Ja und 2. = Ja sind, so brauchst du nur eine Stelle in der Logik verändern.
Ersetze If Ncount > 0 Then
durch If Ncount = 3 Then
"

Dein VBA Code funktioert eingeschränkt. Hier eine Darstellung:

Wert A Wert B Wert C
1001 00001 00001 diese konstalation funktioert
1001 00001 00002 diese konstalation funktioert
1001 00002 00001 diese konstalation funktioert
1001 00002 00002 diese nicht!!!
1002 00001 00001 diese konstalation funktioert
1002 00001 00002 diese nicht!!!


Ich hoffe habe es verständlich gemacht.
Ich danke dir ganz Herzlich bis jetzt hast du sehr geholfen.

Anzeige
AW: Userform doppelte werte auswerten
11.06.2024 11:40:10
simsek
Hallo MCO,

danke für mdeine anregung und Antwort.

hier ist der VBA Code wo ich nur einen Wert überprüfe:



Private Sub Speichern_Click()
If TextBoxBA.Value = "" Or TextBoxEP.Value = "" Or ComboBoxDT.Value = "" Or ComboBoxMT.Value = "" Or ComboBoxFG.Value = "" Or ComboBoxFE.Value = "" Or ComboBoxP.Value = "" Or ComboBoxBLDC.Value = "" Or ComboBoxKW.Value = "" Then
MsgBox "Bitte fülle alle Pflichtelder mit* aus!", , ""
Exit Sub
End If


If Application.CountIf(Sheets("Liste").Range("f11:f5000"), TextBoxSNRD) > 0 Then
MsgBox "Die Seriennummer RD ist schon vorhanden!", vbExclamation
Exit Sub
End If


If Application.CountIf(Sheets("Liste").Range("g11:g5000"), TextBoxSNMT) > 0 Then
MsgBox "Die Seriennummer Motor ist schon vorhanden!", vbExclamation
Exit Sub
End If


'Daten ins Tabellenblatt eintragen
Dim neuezeile As Long

With shliste
neuezeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1

.Cells(neuezeile, 1).Value = TextBoxID.Value
.Cells(neuezeile, 2).Value = TextBoxBA.Value
.Cells(neuezeile, 3).Value = TextBoxEP.Value
.Cells(neuezeile, 4).Value = ComboBoxDT.Value
.Cells(neuezeile, 5).Value = ComboBoxMT.Value
.Cells(neuezeile, 6).Value = TextBoxSNRD.Value
.Cells(neuezeile, 7).Value = TextBoxSNMT.Value
.Cells(neuezeile, 8).Value = ComboBoxFG.Value
.Cells(neuezeile, 9).Value = ComboBoxFE.Value
.Cells(neuezeile, 10).Value = ComboBoxP.Value
.Cells(neuezeile, 11).Value = ComboBoxBLDC.Value
.Cells(neuezeile, 12).Value = ComboBoxKW.Value
End With

'UserForm Schließen
Unload Me

End Sub



Ich Prüfe 2 TextBoxen auf den wert, was ja auch klappt. Nur ich Möchte beim Speichen auf der Userform die werte ComboBoxDT, TextBoxSNRD und TextBoxSNMT überprüfen!
Falls identische werte sind soll MessageBox kommen bzw. eine Warnung und soll nicht speichern. Falls ein wert von den drei Values unterschuiedlich ist dann soll ich speichern können auf dem Tabellenblatt bzw. Tabelle.

Gruß Mehmet
Anzeige
;

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