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

Doppelte Namen in 2 Tabellenblättern anzeigen

Doppelte Namen in 2 Tabellenblättern anzeigen
14.08.2019 11:02:00
Sven
Guten Tag,
ich habe nun schon ewig im Web gesucht, jedoch keine passende Lösung gefunden.
Ich habe eine Tabelle Namens "Terminer" mit 2 Tabellenblättern.
Das 1. Tabellenblatt heißt Transporter, dass 2. Termine.
Im 1. Tabellenblatt befindet sich eine Spalte Nachname (Spalte B) und 1 Spalte Vorname (Spalte C). Die Spalten werden von Hand gefüllt.
Im 2. Tabellenblatt gibt es diese beiden Spalten ebenfalls, auch in Spalte B und C.
Nun benötige ich einen Code, welcher mir eine Msg-Box mit Fehlermeldung (Bsp. Name schon in Tabellenblatt 1 eingetragen!)öffnet, wenn ich beispielsweise einen Namen + Vornamen in das 2. Tabellenblatt (Termine) eingebe, welcher im 1. Tabellenblatt schon vorhanden ist.
Schreibe ich ins Tabellenblatt 2 einen Namen, welcher in Tabellenblatt 1 steht, soll es synchron laufen, also auch eine Fehlermeldung erscheinen.
Gelöscht werden sollten die Daten nicht.
Ich hoffe ich konnte es einigermaßen plausibel erklären.
Danke schonmal im Vorraus.

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

Betreff
Datum
Anwender
Anzeige
AW: Doppelte Namen in 2 Tabellenblättern anzeigen
14.08.2019 13:33:10
Pierre
Hallo,
als Ansatz:
https://docs.microsoft.com/de-de/office/vba/excel/concepts/cells-and-ranges/prevent-duplicate-entries-in-a-range
Gruß Pierre
AW: Doppelte Namen in 2 Tabellenblättern anzeigen
14.08.2019 14:00:50
Sven
Vielen Dank für die Antwort, er soll allerdings keine doppelten Namen im gleichen Tabellenblatt finden, sondern lediglich eine MsgBox anzeigen, wenn der Name im anderen Tabellenblatt schon vorkommt.
Leider sind meine VBA-Kenntnisse zu gering, als dass ich mir diesen Code umbasteln könnte.
Den Code kann ich in ein Steuerelement mit einbauen, welches ich eh schon habe, um Daten zu sortieren, er muss also nicht zwingend bei Eingabe schon prüfen.
Bitte weiterhin um Hilfe.
Anzeige
AW: Doppelte Namen in 2 Tabellenblättern anzeigen
14.08.2019 14:14:23
Pierre
Naja, war auch, wie gesagt, als Ansatz gedacht.
Du kannst den Teil von "If WorksheetFunction.CountIf" bis vor dem "For Each ws" weg lassen, dann wird nur auf dem jeweils anderen Tabellenblatt gesucht, nicht mehr innerhalb des gleichen.
Ich poste mal den angepassten Code.
So wie ich es verstehe, dürfte das genau das sein, was du benötigst.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Define your variables.
Dim ws As Worksheet, EvalRange As Range
'Set the range where you want to prevent duplicate entries.
Set EvalRange = Range("A1:B20")
'If the cell where value was entered is not in the defined range, if the value pasted is  _
larger than a single cell,
'or if no value was entered in the cell, then exit the macro.
If Intersect(Target, EvalRange) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub
If IsEmpty(Target) Then Exit Sub
'If the value entered already exists in the defined range on the current worksheet, throw  _
an
'error message and undo the entry.
'If WorksheetFunction.CountIf(EvalRange, Target.Value) > 1 Then
'MsgBox Target.Value & " already exists on this sheet."
'Application.EnableEvents = False
'Application.Undo
'Application.EnableEvents = True
'End If
'Check the other worksheets in the workbook.
For Each ws In Worksheets
With ws
If .Name  Target.Parent.Name Then
'If the value entered already exists in the defined range on the current  _
worksheet, throw an
'error message and undo the entry.
If WorksheetFunction.CountIf(Sheets(.Name).Range("A1:B20"), Target.Value) > 0  _
Then
MsgBox Target.Value & " already exists on the sheet named " & .Name & ".",  _
_
16, "No duplicates allowed in " & EvalRange.Address(0, 0) & "."
Application.EnableEvents = False
'Application.Undo
Application.EnableEvents = True
Exit For
End If
End If
End With
Next ws
End Sub
Den Teil, den ich anfangs meinte, habe ich auskommentiert. Außerdem musst du nur das "Application.Undo" weg nehmen, wenn deine (doppelte) Eingabe dennoch stehen bleiben soll.
Anzeige
AW: Doppelte Namen in 2 Tabellenblättern anzeigen
14.08.2019 14:17:37
Pierre
Sorry, ich habe jetzt nicht den Bereich angepasst! Aber das schaffst du bestimmt ;-)
Was ich noch vergessen habe: Weiterhin meckert er bei gleichen Vor- bzw. Nachnamen. Da müsste dann evtl. jemand anderes noch dran.
AW: Doppelte Namen in 2 Tabellenblättern anzeigen
15.08.2019 12:22:15
Sven
Leider bin ich damit etwas überfordert. Hab nur ein paar selbst beigebrachte VBA-Kenntnisse. Der Code überfordert mich etwas, da ich mich mit Vergleich etc. noch nicht so beschäftigt habe, vielleicht kann man den doch etwas anpassen und es ist zwingend nötig, dass er Name und Vorname vergleicht.
Der ganze Code kommt dann in "Diese Arbeitsmappe" oder?
AW: Doppelte Namen in 2 Tabellenblättern anzeigen
16.08.2019 08:42:21
Pierre
Bin erst jetzt wieder am PC...
Viele Kenntnisse habe ich leider auch nicht, aber im Rahmen meiner Möglichkeiten versuche ich halbwegs zu helfen.
Kannst du das evtl. so umbauen, dass du den kompletten Namen direkt in eine Zelle schreibst?
Wenn das geht, kannst du den Code so lassen, wie er ist.
Wenn nicht, müsste da tatsächlich jemand ran, der wirklich Ahnung von VBA hat. Das übersteigt auch meine Kenntnisse.
Der jetzige Code kommt auf jeden Fall in "Diese Arbeitsmappe", das stimmt.
Ich poste dir mal den Code. Füge den einfach mal in deiner Mappe ein und teste. Alles, wo ein ' vor steht, kannst du theoretisch löschen, ich habe aber alles aus dem Originalcode drin gelassen.
 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Define your variables.
Dim ws As Worksheet, EvalRange As Range
'Set the range where you want to prevent duplicate entries.
Set EvalRange = Range("B:C")
'If the cell where value was entered is not in the defined range, if the value pasted is _
larger than a single cell,
'or if no value was entered in the cell, then exit the macro.
If Intersect(Target, EvalRange) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub
If IsEmpty(Target) Then Exit Sub
'If the value entered already exists in the defined range on the current worksheet, throw  _
_
an
'error message and undo the entry.
'If WorksheetFunction.CountIf(EvalRange, Target.Value) > 1 Then
'MsgBox Target.Value & " already exists on this sheet."
'Application.EnableEvents = False
'Application.Undo
'Application.EnableEvents = True
'End If
'Check the other worksheets in the workbook.
For Each ws In Worksheets
With ws
If .Name  Target.Parent.Name Then
'If the value entered already exists in the defined range on the current _
worksheet, throw an
'error message and undo the entry.
If WorksheetFunction.CountIf(Sheets(.Name).Range("B:C"), Target.Value) > 0 _
Then
MsgBox Target.Value & " existiert schon auf Tabellenblatt " & .Name & ".",  _
_
_
16, "No duplicates allowed in " & EvalRange.Address(0, 0) & "."
Application.EnableEvents = False
'Application.Undo
Application.EnableEvents = True
Exit For
End If
End If
End With
Next ws
End Sub

Anzeige
AW: Doppelte Namen in 2 Tabellenblättern anzeigen
16.08.2019 14:07:31
Werner
Hallo Sven,
schau dir die beiliegende Datei mal an.
Bei den Makros handelt es sich um Event-Makros der beiden Tabellenblätter. Bedeutet, dass der Code sich im Codemodul des jweiligen Tabellenblattes befindet.
Öffne mit Alt + F11 den Makroeditior. Durch Doppelklick auf das entsprechende Tabellenblatt im Projektbaum öffnet sich das Codemodul des entsprechenden Tabellenblattes.
Der Code reagiert auf Eingaben in Spalte B und C sowohl im Blatt "Transporter" als auch im Blatt "Termine".
Im Blatt "Transporter" habe ich in Spalte D eine Hilfsspalte hinterlegt in der bei Eingabe eines Nachnamens in Spalte B und eines Vornamens in Spalte C Nachname und Vorname verbunden werden.
Spalte D ist ausgeblendet, damit man davon nichts sieht.
https://www.herber.de/bbs/user/131459.xlsm
Gruß Werner
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige