Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
724to728
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
724to728
724to728
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

doppelte Einträge ü. mehrere A.-blätter verhindern

doppelte Einträge ü. mehrere A.-blätter verhindern
28.01.2006 12:36:38
Paul
Hallo Excel-Spezialisten,
ich wende mich an Euch, weil ich im Moment nicht weiter komme:
Ich habe eine Excel-datei mit Einträgen über mehrere Arbeitsblätter. Ich möchte nun verhindern, daß ein Eintrag doppelt vorgenommen werden kann.
Blatt 1 bis Blatt n enthält immer in Spalte A fortlaufende Nummern. Wenn ich nun ein neues Blatt beginne und wiederum in Spalte A die neuen Nummern eintrage soll verhindert werden, daß aufgrund von Tippfehlern eine Nummer doppelt vorkommt.
Habt Ihr mir hierfür eine Lösung ? Wenn möglich ohne VBA.
Evtl. denkbar wäre auch noch den doppelten Eintrag erst auf Nachfrage zuzulassen ("Achtung, Eintrag bereits vorhanden. Wollen Sie dies zulassen ?")
Gruß Paul

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: doppelte Einträge ü. mehrere A.-blätter verhindern
28.01.2006 14:23:00
Dieter
Sinnvoll geht das m.E. nur mit VBA und das:
"Evtl. denkbar wäre auch noch den doppelten Eintrag erst auf Nachfrage zuzulassen ("Achtung, Eintrag bereits vorhanden. Wollen Sie dies zulassen ?")"
geht nur mit VBA.
mfg Dieter
AW: doppelte Einträge ü. mehrere A.-blätter verhin
28.01.2006 14:45:58
Paul
Hallo Dieter,
solange sich meine Abfrage (Daten - Gültigkeit) nur auf ein Arbeitsblatt beschränkt kann ich sogar über diese Funktion eine Abfrage einstellen, bei der ich auf den bereits enthaltenen Eintrag hingewiesen werde; ich kann dann wählen ob der Eintrag zugelassen werden soll oder die Eingabe erneut und somit ggf. ohne Tippfehler wiederholt werden soll. (Soweit alles ohne VBA möglich)
Mein Problem liegt in der übergreifenden Abfrage über mehrere Arbeitsblätter. Wenn es also ohne VBA nicht geht, wie geht es dann mit VBA ?
Gruß Paul
Anzeige
Nachtrag: doppelte Einträge ü. mehrere A.-blätter
28.01.2006 14:38:39
Paul
Noch ein Nachtrag:
ganz gut gefällt mir die Möglichkeit über "Daten" - "Gültigkeit" mit der Formel =ZÄHLENWENN($A$1:$A$100;A1)&lt2
Allerdings funtioniert dies nicht mehr sobald ich die Spalte A von 2 Arbeitsblättern eingeben möchte. Habe auch schon versucht die Spalten unter einem Namen zusammenzufassen ("Einfügen" - "Name" - "Definieren")
Falls nur mit VBA möglich, wage ich mich natürlich auch an diese Materie (mit eurer Hilfe)
Gruß Paul
AW: doppelte Einträge ü. mehrere A.-blätter verhin
29.01.2006 15:03:15
Paul
Weiß niemand Rat ?
Bin für jeden Hinweis dankbar
Gruß Paul
AW: doppelte Einträge ü. mehrere A.-blätter verhin
29.01.2006 18:19:06
Albin
Hi,
hier mal ein Vorschlag mit Makro, vermutlich ein bissl umständlich sollte aber funktionieren.
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet, wsNameA As String
Dim s As Integer, z As Integer, Lz As Integer, i As Integer
Dim Eingabe As String, Aktiv As Object
Dim Weiter
s = Target.Column
z = Target.Row
If s <> 1 Then Exit Sub
Set Aktiv = ThisWorkbook.ActiveSheet
wsNameA = ThisWorkbook.ActiveSheet.Name
Eingabe = ThisWorkbook.ActiveSheet.Cells(z, s)
For Each ws In ActiveWorkbook.Worksheets
Lz = ws.Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To Lz
If Eingabe <> "" Then
If ws.Cells(i, 1) = Eingabe Then
If ws.Name <> wsNameA Then
Weiter = MsgBox("Achtung, Eintrag bereits in " & ws.Name & _
" vorhanden. Wollen Sie dies zulassen?", vbYesNo)
If Weiter = vbNo Then
Aktiv.Cells(z, 1) = ""
Aktiv.Cells(z, 1).Select
Exit Sub
End If
End If
End If
End If
Next i
Next ws
Lz = Aktiv.Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To Lz - 1
If Aktiv.Cells(i, 1) = Eingabe Then
Weiter = MsgBox("Achtung, Eintrag bereits in aktiver Tabelle vorhanden. Wollen Sie dies zulassen?", _
vbYesNo)
If Weiter = vbNo Then
Aktiv.Cells(z, 1) = ""
Aktiv.Cells(z, 1).Select
Exit Sub
End If
End If
Next i
End Sub

Du kopierst den Code in das Codemodul der Tabelle. Beim Einfügen neuer Arbeitsblätter daran Denken dass Du den Code auch dort brauchst (einfach das letzte Arbeitsblatt kopieren).
Gruß
Albin
Anzeige
AW: doppelte Einträge ü. mehrere A.-blätter verhin
30.01.2006 19:29:15
Paul
Hallo Albin,
erst mal Danke für den Code. Funktioniert ganz gut.
Wofür steht die erste Zeile: "Option Explicit" ? Brauche ich den Eintrag ? Habs mit und ohne den Eintrag versucht: Beides Funktioniert.
Läßt sich so ein Code auch so schreiben, dass ich ihn nur einmal eintrage ? Sollte mal eine Änderung erforderlich sein, ist es mühsam den Code über alle Arbeitsblätter zu ändern. Ich hab ihn jetzt in jedes Tabellenblatt eingetragen. Warum funktioniert es nicht, wenn ich den Code bei "Diese Arbeitsmappe" eintrage ?
Bin weiterhin für jeden Hilfe dankbar
Gruß Paul
AW: doppelte Einträge ü. mehrere A.-blätter verhin
30.01.2006 19:29:57
Paul
Hallo Albin,
erst mal Danke für den Code. Funktioniert ganz gut.
Wofür steht die erste Zeile: "Option Explicit" ? Brauche ich den Eintrag ? Habs mit und ohne den Eintrag versucht: Beides Funktioniert.
Läßt sich so ein Code auch so schreiben, dass ich ihn nur einmal eintrage ? Sollte mal eine Änderung erforderlich sein, ist es mühsam den Code über alle Arbeitsblätter zu ändern. Ich hab ihn jetzt in jedes Tabellenblatt eingetragen. Warum funktioniert es nicht, wenn ich den Code bei "Diese Arbeitsmappe" eintrage ?
Bin weiterhin für jeden Hilfe dankbar
Gruß Paul
Anzeige
AW: doppelte Einträge ü. mehrere A.-blätter verhin
30.01.2006 19:30:00
Paul
Hallo Albin,
erst mal Danke für den Code. Funktioniert ganz gut.
Wofür steht die erste Zeile: "Option Explicit" ? Brauche ich den Eintrag ? Habs mit und ohne den Eintrag versucht: Beides Funktioniert.
Läßt sich so ein Code auch so schreiben, dass ich ihn nur einmal eintrage ? Sollte mal eine Änderung erforderlich sein, ist es mühsam den Code über alle Arbeitsblätter zu ändern. Ich hab ihn jetzt in jedes Tabellenblatt eingetragen. Warum funktioniert es nicht, wenn ich den Code bei "Diese Arbeitsmappe" eintrage ?
Bin weiterhin für jeden Hilfe dankbar
Gruß Paul
AW: doppelte Einträge ü. mehrere A.-blätter verhin
31.01.2006 03:27:16
Albin
Hi,
freut mich, dass es klappt.
OPTION EXPLICIT erzwingt das Deklarieren der Variablen. Die verwendung nicht deklarierter Variablen führt zu einem Fehler beim Kompilieren, kannst Du in der Onlinehilfe gut nachlesen. Vor allem bei großen Projekten kann man sich viel Fehlersuchen sparen, wenn die Variablen deklariert werden _müssen_.
"Worksheet_Change" funktioniert leider nur in den einzelnen Tabellen, nicht in "Diese Arbeitsmappe".
Um den selben Code nicht in jeder Tabelle zu benötigen kannst Du folgendes ändern:
Code in den Arbeitsblättern:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim s As Integer, z As Integer
s = Target.Column
z = Target.Row
If s <> 1 Then Exit Sub
Call Doppelte_suchen(z, s)
End Sub

In ein Standard-Modul (Ansicht/Einfügen/Modul) kommt dann folgender Code:
Sub Doppelte_suchen(z As Integer, s As Integer)
Dim ws As Worksheet, wsNameA As String
Dim Lz As Integer, i As Integer
Dim Eingabe As String, Aktiv As Object
Dim Weiter
Set Aktiv = ThisWorkbook.ActiveSheet
wsNameA = ThisWorkbook.ActiveSheet.Name
Eingabe = ThisWorkbook.ActiveSheet.Cells(z, s)
For Each ws In ActiveWorkbook.Worksheets
Lz = ws.Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To Lz
If Eingabe "" Then
If ws.Cells(i, 1) = Eingabe Then
If ws.Name wsNameA Then
Weiter = MsgBox("Achtung, Eintrag bereits in " & ws.Name & _
" vorhanden. Wollen Sie dies zulassen?", vbYesNo)
If Weiter = vbNo Then
Aktiv.Cells(z, 1) = ""
Aktiv.Cells(z, 1).Select
Exit Sub
End If
End If
End If
End If
Next i
Next ws
Lz = Aktiv.Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To Lz - 1
If Aktiv.Cells(i, 1) = Eingabe Then
Weiter = MsgBox("Achtung, Eintrag bereits in aktiver Tabelle vorhanden. Wollen Sie dies zulassen?", _
vbYesNo)
If Weiter = vbNo Then
Aktiv.Cells(z, 1) = ""
Aktiv.Cells(z, 1).Select
Exit Sub
End If
End If
Next i
End Sub
Gruß
Albin
Anzeige
AW: doppelte Einträge ü. mehrere A.-blätter verhin
31.01.2006 21:06:18
Paul
Hallo Albin,
sieht schon richtig gut aus. Jetzt hab ich nur eine kleine Frage: Welche Einträge muss ich ändern, um den Code auf die Spalte H zu übertragen (anstatt Spalte A).
Wieso unterscheidet sich der Code eigentlich geringfügig vom ersten ?
(Der Eintrag " If s 1 Then Exit Sub" ist im letzten Code nicht mehr enthalten)
Gruß Paul
AW: doppelte Einträge ü. mehrere A.-blätter verhin
01.02.2006 21:12:43
Albin
Hi Paul,
damit der Code statt in Spalte A (1), in der Spalte H (8) funktioniert muß die Spaltenzahl geändert werden.
Code in den Arbeitsmapen:
Die Zeile "If s 1 Then Exit Sub" gibt es schon noch, allerdings im Code der Arbeismappen. Hier ist die "1" in "8" zu ändern. Die Zeile bedeutet, dass das Programm abbricht wenn die aktuelle Spalte nicht die Nummer 8 hat.
Worksheet_Change: If s 8 Then Exit Sub
Ersetze oder ändere im Standardmodul den Code.
"s" ist die Spaltenzahl.

Sub Doppelte_suchen(z As Integer, s As Integer)
Dim ws As Worksheet, wsNameA As String
Dim Lz As Integer, i As Integer
Dim Eingabe As String, Aktiv As Object
Dim Weiter
Set Aktiv = ThisWorkbook.ActiveSheet
wsNameA = ThisWorkbook.ActiveSheet.Name
Eingabe = ThisWorkbook.ActiveSheet.Cells(z, s)
For Each ws In ActiveWorkbook.Worksheets
Lz = ws.Cells(Rows.Count, s).End(xlUp).Row
For i = 1 To Lz
If Eingabe <> "" Then
If ws.Cells(i, s) = Eingabe Then
If ws.Name <> wsNameA Then
Weiter = MsgBox("Achtung, Eintrag bereits in " & ws.Name & _
" vorhanden. Wollen Sie dies zulassen?", vbYesNo)
If Weiter = vbNo Then
Aktiv.Cells(z, s) = ""
Aktiv.Cells(z, s).Select
Exit Sub
End If
End If
End If
End If
Next i
Next ws
Lz = Aktiv.Cells(Rows.Count, s).End(xlUp).Row
For i = 1 To Lz - 1
If Aktiv.Cells(i, s) = Eingabe Then
Weiter = MsgBox("Achtung, Eintrag bereits in aktiver Tabelle vorhanden. Wollen Sie dies zulassen?", _
vbYesNo)
If Weiter = vbNo Then
Aktiv.Cells(z, s) = ""
Aktiv.Cells(z, s).Select
Exit Sub
End If
End If
Next i
End Sub

Anzeige
AW: doppelte Einträge ü. mehrere A.-blätter verhin
01.02.2006 22:33:25
Paul
Hallo Albin,
irgendetwas funktioniert nicht so wie es sollte.
Muss es mal vernünftig und verständlich formulieren.
Melde mich diesbezgl. morgen wieder.
Trotz allem mal vielen Dank
Gruß

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige