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

exel..doppelte einträge verhindern

exel..doppelte einträge verhindern
13.07.2007 09:22:23
weingartner
Habe folgendes problem bei dem ich nicht weiterkomme ich würde eine formel benötigen (VBA SCRIPT)
die im Hindergrund läuft und mir bei Zellenwechsel per msg Box anzeigt das es diesen eintrag schon gibt !
das ganze bezieht sich auf die spalten B;C;I;J;P;Q;
würde mich über jeden lösungsvorschlag freuen... meine Datei hat knapp ein mb darum kann ich sie leider nicht auf den Server hochladen aber bei interesse per mail schicken..........
schöne grüße aus wien...........

29
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: exel..doppelte einträge verhindern
13.07.2007 09:40:00
Chaos
Servus,
jetzt nurmal für Spalte A:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim z As Integer, i As Integer
If Not Intersect(Target, Range("A:A")) Is Nothing Then
If Target.Value  "" Then
i = Range("A65536").End(xlUp).Offset(0 - 1, 0).Row
For z = 1 To i Step 1
If Cells(z, 1).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.ClearContents
End If
Next z
End If
End If
geht für die anderen Spalten genauso.
Gruß aus Bayern
Chaos
End Sub


AW: exel..doppelte einträge verhindern
13.07.2007 10:30:00
weingartner
Danke für die rasche Info !
Hätte da noch eine zusatzfrage angenommen ich schreibe einen Wert in Spalte q ! wird dann auch spalte b,ci,j,p überprüft ? oder eben nur spalte q ?

Anzeige
AW: exel..doppelte einträge verhindern
13.07.2007 11:08:39
Chaos
Servus Ernst,
im Moment wird nur geprüft, wo eingegeben wurde.
Hier:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim z As Integer, i As Integer
If Not Intersect(Target, Range("B:B")) Is Nothing Then
If Target.Value  "" Then
i = Range("B65536").End(xlUp).Offset(0 - 1, 0).Row
For z = 1 To i Step 1
If Cells(z, 2).Value  "" Then
If Cells(z, 2).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
End If
End If
If Cells(z, 3).Value  "" Then
If Cells(z, 3).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
End If
End If
If Cells(z, 9).Value  "" Then
If Cells(z, 9).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
End If
End If
If Cells(z, 10).Value  "" Then
If Cells(z, 10).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
End If
End If
If Cells(z, 16).Value  "" Then
If Cells(z, 16).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
End If
End If
If Cells(z, 17).Value  "" Then
If Cells(z, 17).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
End If
End If
Next z
End If
End If
End Sub


wird in allen Spalten geprüft, die du angegeben hast, wenn irgendwas in den Zellen drin steht, aber nur bis zu der Zeile, wo du in Spalte B bereits Werte stehen hattest.
Dieses Makro gilt aber momentan nur für Eingaben in Spalte B, für die anderen Spalten musst du den Kopf in If Intersect(Target, Range("gewünschte Spalte:gewünschteSpalte") abbändern und das komplette Makro unten anhängen.
Also so:


Private Sub Worksheet_Change(ByVal Target As Range)
Dim z As Integer, i As Integer
If Not Intersect(Target, Range("B:B")) Is Nothing Then
If Target.Value  "" Then
i = Range("B65536").End(xlUp).Offset(0 - 1, 0).Row
For z = 1 To i Step 1
If Cells(z, 2).Value  "" Then
If Cells(z, 2).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 3).Value  "" Then
If Cells(z, 3).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 9).Value  "" Then
If Cells(z, 9).Value = Target.Value Then
MsgBox ("Wert in Spalte B schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 10).Value  "" Then
If Cells(z, 10).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 16).Value  "" Then
If Cells(z, 16).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 17).Value  "" Then
If Cells(z, 17).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
Next z
End If
End If
If Not Intersect(Target, Range("C:C")) Is Nothing Then
If Target.Value  "" Then
i = Range("C65536").End(xlUp).Offset(0 - 1, 0).Row
For z = 1 To i Step 1
If Cells(z, 2).Value  "" Then
If Cells(z, 2).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 3).Value  "" Then
If Cells(z, 3).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 9).Value  "" Then
If Cells(z, 9).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 10).Value  "" Then
If Cells(z, 10).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 16).Value  "" Then
If Cells(z, 16).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 17).Value  "" Then
If Cells(z, 17).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
Next z
End If
End If
End Sub


das ist jetzt für Eingabe in B und C mit Überprüfung aller von dir genannten Spalten B = 2, C=3;I = 9, J=10, P = 16 und Q = 17
Gruß
Chaos

Anzeige
AW: exel..doppelte einträge verhindern
13.07.2007 10:48:59
weingartner
hallo !
habe die formel ausprobiert jedoch ohne Erfolg es tut sich nichts !
mfg:Ernst
aber danke für die Bemühung..

AW: exel..doppelte einträge verhindern
13.07.2007 11:11:27
Chaos
Servus Ernst,
mit welcher Spalte hast du das ausprobiert ?
Gruß
Chaos

AW: exel..doppelte einträge verhindern
13.07.2007 11:38:46
weingartner
hey !
habs mit a ausprobiert
könnte ich dir die datei vielleicht per mail schicken ?

AW: exel..doppelte einträge verhindern
13.07.2007 11:51:34
Chaos
Servus,
christian.stadter@henkel.com
Komme aber erst ab Montag dazu.
Gruß und schönes WE
Chaos

AW: exel..doppelte einträge verhindern
13.07.2007 11:53:00
weingartner
HEY !
Das spielt überhaupt keine rolle ich sag schon mal danke im vorraus und wünsche ein schönes wochenende.........
mfg Ernst

Anzeige
AW: exel..doppelte einträge verhindern
13.07.2007 22:24:44
Peter
Hallo Ernst,
versuch es doch einmal so:
'
' Habe folgendes Problem bei dem ich nicht weiterkomme ich würde eine Formel
' benötigen (VBA SCRIPT), die im Hindergrund läuft und mir bei Zellenwechsel
' per MsgBox anzeigt dass es diesen Eintrag schon gibt !
' das ganze bezieht sich auf die Spalten B;C;I;J;P;Q;
'

Private Sub Worksheet_Change(ByVal Target As Range)
Dim aSpalten
If Target.Count > 1 Or _
Target.Value = "" Then Exit Sub
aSpalten = Array(" ", "A", "B", "C", "D", "E", "F", "G", "H", _
"I", "J", "K", "L", "M", "N", "O", "P", "Q")
If Target.Column = 2 Or Target.Column = 3 Or Target.Column = 9 Or _
Target.Column = 10 Or Target.Column = 17 Then
If Application.WorksheetFunction.CountIf(Columns(Target.Column), _
Target.Value) > 1 Then
MsgBox "die Eingabe """ & Target.Value & """ gibt es" & Chr(10) & _
"in der Spalte """ & aSpalten(Target.Column) & """ bereits.", _
48, "   Hinweis für " & Application.UserName
Target.Value = ""
Cells(Target.Row, Target.Column).Select
End If
End If
End Sub


Kopier das in den Code (das Klassenmodul) des fraglichen Tabellenblattes
Gruß Peter

Anzeige
AW: exel..doppelte einträge verhindern
14.07.2007 13:57:00
Peter
Hallo Ernst,
zwei kleine Korrekturen:
'
' Ich habe folgendes Problem bei dem ich nicht weiterkomme ich würde eine Formel
' benötigen (VBA SCRIPT), die im Hindergrund läuft und mir bei Zellenwechsel
' per MsgBox anzeigt dass es diesen Eintrag schon gibt !
' das ganze bezieht sich auf die Spalten B;C;I;J;P;Q;
'

Private Sub Worksheet_Change(ByVal Target As Range)
Dim aSpalten
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
aSpalten = Array(" ", "A", "B", "C", "D", "E", "F", "G", "H", _
"I", "J", "K", "L", "M", "N", "O", "P", "Q")
If Target.Column = 2 Or Target.Column = 3 Or _
Target.Column = 9 Or Target.Column = 10 Or _
Target.Column = 16 Or Target.Column = 17 Then
If Application.WorksheetFunction.CountIf(Columns(Target.Column), _
Target.Value) > 1 Then
MsgBox "die Eingabe """ & Target.Value & """ gibt es" & Chr(10) & _
"in der Spalte """ & aSpalten(Target.Column) & """ bereits.", _
48, "   Hinweis für " & Application.UserName
Target.Value = ""
Cells(Target.Row, Target.Column).Select
End If
End If
End Sub


Gruß Peter

Anzeige
AW: exel..doppelte einträge verhindern
15.07.2007 09:37:52
weingartner
Hallo Peter !
Zu erst recht herzlichen Dank für deinen Lösungsvorschlag, funktioniert 1a,ist aber leider nicht ganz das was ich benötige "Es sollten nicht nur die Spalte b... sondern auch a... usw... überprüft werden..
zb. eingabe in spalt ..Q.. Ausgabe:... Eintrag in Spalte ..A..schon vorhanden....

AW: exel..doppelte einträge verhindern
15.07.2007 10:03:00
weingartner
Hallo Peter !
ich könnte dir meine Datei auch per Mail schicken ...............
Mfg.Ernst

AW: exel..doppelte einträge verhindern
15.07.2007 10:40:22
weingartner
Hallo Peter !
Habe meine Datei gezippt und sie hochgeladen,das ganze bezieht sich auf die spalten Twg,BWG..........
Schönen Sonntag noch..
Mfg.Ernst
https://www.herber.de/bbs/user/44087.zip

Anzeige
AW: exel..doppelte einträge verhindern
16.07.2007 08:43:02
Peter
Hallo Ernst,
so, wie mein Makro arbeitet, habe ich deine Frage verstanden und daraufhin entwickelt.
Da du aber etwas anderes möchtest, solltes du noch einmal genau schildern, was das sein soll.
Wenn eine Eingabe in Spalte X, dann keine doppelten in Spalte(n) Y
Wenn eine Eingabe in Spalte Z, dann keine doppelten in Spalte(n) V
Wenn eine Eingabe in Spalte M, dann keine doppelten in Spalte(n) N
usw.
Vielleicht finde ich nach erneutem Verständnis eine Möglichkeit, dir zu helfen.
Gruß Peter

AW: exel..doppelte einträge verhindern
16.07.2007 09:25:00
weingartner
Hallo Peter !
Wenn eine Eingabe in Spalte B, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
Wenn eine Eingabe in Spalte C, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
Wenn eine Eingabe in Spalte I, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
Wenn eine Eingabe in Spalte J, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
Wenn eine Eingabe in Spalte P, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
Wenn eine Eingabe in Spalte Q, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
Wenn eine Eingabe in Spalte V, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
Wenn eine Eingabe in Spalte W, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
Das wärs was ich konkret brauchen würde nach jeder eingabe sollten folgende Spalten (B,C,I,J,P,Q,V,W) auf doppelte einträge überprüft werden...
mfg.Ernst

Anzeige
AW: exel..doppelte einträge verhindern
16.07.2007 09:45:39
weingartner
Hallo Peter !
Wenn eine Eingabe in Spalte B, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
Wenn eine Eingabe in Spalte C, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
Wenn eine Eingabe in Spalte I, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
Wenn eine Eingabe in Spalte J, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
Wenn eine Eingabe in Spalte P, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
Wenn eine Eingabe in Spalte Q, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
Wenn eine Eingabe in Spalte V, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
Wenn eine Eingabe in Spalte W, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
Das wärs was ich konkret brauchen würde nach jeder eingabe sollten folgende Spalten (B,C,I,J,P,Q,V,W) auf doppelte einträge überprüft werden...
Allerdings befinden sich in den Jeweilligen spalten folgende Überschriften (Twg,Bwg) diese sollten bei der Überprüfung nicht berücksichtigt werden.....
Mfg.Ernst
Anbei die Datei um die es sich handelt................
https://www.herber.de/bbs/user/44115.zip

Anzeige
AW: exel..doppelte einträge verhindern
16.07.2007 09:54:00
Peter
Hallo Ernst,
dann versuch es einmal so:


'
'   Wenn eine Eingabe in Spalte B, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte C, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte I, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte J, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte P, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte Q, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte V, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte W, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'
'   Das wärs was ich konkret brauchen würde nach jeder Eingabe sollten folgende
'   Spalten (B,C,I,J,P,Q,V,W) auf doppelte einträge überprüft werden...
'
Private Sub Worksheet_Change(ByVal Target As Range)
Dim aSpalte
Dim iSpalte
Dim iIndex    As Integer
   If Target.Count > 1 Then Exit Sub
   If Target.Value = "" Then Exit Sub
   aSpalte = Array(" ", "A", "B", "C", "D", "E", "F", "G", "H", _
                    "I", "J", "K", "L", "M", "N", "O", "P", "Q", _
                    "R", "S", "T", "U", "V", "W", "X", "Y", "Z")
   iSpalte = Array(2, 3, 9, 10, 16, 17, 22, 23)
   If Target.Column = 2 Or Target.Column = 3 Or _
      Target.Column = 9 Or Target.Column = 10 Or _
      Target.Column = 16 Or Target.Column = 17 Or _
      Target.Column = 22 Or Target.Column = 23 Then
      For iIndex = 0 To UBound(iSpalte)
         If Target.Column = iSpalte(iIndex) Then
            If Application.WorksheetFunction.CountIf(Columns(Target.Column), _
               Target.Value) > 1 Then
               MsgBox "die Eingabe """ & Target.Value & """ gibt es" & Chr(10) & _
                  "in der Spalte """ & aSpalte(Target.Column) & """ bereits.", _
                  48, "   Hinweis für " & Application.UserName
               Target.Value = ""
               Cells(Target.Row, Target.Column).Select
            End If
         Else
            If Application.WorksheetFunction.CountIf(Columns(iSpalte(iIndex)), _
               Target.Value) > 0 Then
               MsgBox "die Eingabe """ & Target.Value & """ gibt es" & Chr(10) & _
                  "in der Spalte """ & aSpalte(iSpalte(iIndex)) & """ bereits.", _
                  48, "   Hinweis für " & Application.UserName
               Target.Value = ""
               Cells(Target.Row, Target.Column).Select
            End If
         End If
      Next iIndex
   End If
End Sub 


Gruß Peter

Anzeige
AW: exel..doppelte einträge verhindern
16.07.2007 10:08:45
weingartner
Hallo Peter !
funktioniert einwandfrei, allerdings mach ich einen Eintrag in Spalte a und zb. anschliessend in spalte p so macht er mich darauf aufmerksam das es diesen eintrag schon in Spalte a gibt,weiters kommt info diesen Eintrag gibt es schon in spalte B in Spalte C usw. bis alle spalten abgehandelt sind obwohl dort dieser Wert nicht vorhanden ist................
Mfg....Ernst

AW: exel..doppelte einträge verhindern
16.07.2007 10:48:32
weingartner
Hallo Peter !
Das ist genau das was ich mir vorgestellt habe recht herzlichen Dank !
verstehe zwar nicht wieso das Makro bei mir diese Schleife durchläuft ,aber die Lösung ist perfekt vielen ,vielen Dank !
Mfg Ernst
https://www.herber.de/bbs/user/44115.zip

AW: exel..doppelte einträge verhindern
16.07.2007 11:19:52
Peter
Hallo Ernst,
wo hast du das Makro eingefügt? Ich finde es nicht. Wo soll es hinein - in welches Tabellenblatt?
Gruß Peter

AW: exel..doppelte einträge verhindern
16.07.2007 11:23:32
weingartner
Hallo Peter !
habe es bei Tabelle 1 Werktag eingefügt funktioniert auch ....aber diese schleife nervt etwas...
Mfg..Ernst

AW: exel..doppelte einträge verhindern
16.07.2007 11:26:44
Peter
Hallo Ernst,
ich habe noch eine Kleinigkeit eingefügt "Exit For", wenn ein Eintrag gefunden wurde.
Vielleicht ist das eine Lösung für dich.


'
'   Wenn eine Eingabe in Spalte B, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte C, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte I, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte J, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte P, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte Q, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte V, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte W, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'
'   Das wär's was ich konkret brauchen würde. Nach jeder Eingabe sollten folgende
'   Spalten (B, C, I, J, P, Q, V, W) auf doppelte Einträge überprüft werden...
'
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iSpalte   As Variant  ' die Eingabe- und die zu vergleichenden Spalten
Dim iIndex    As Integer  ' Index für den Spalten-Array
   If Target.Count > 1 Then Exit Sub   ' mehr als eine Zelle markiert ?
   If Target.Value = "" Then Exit Sub  ' ist die Zelle gefüllt ?
'
'                  B  C  I   J   P   Q   V   W
   iSpalte = Array(2, 3, 9, 10, 16, 17, 22, 23) ' die Spalten-Nummern als Array
   If Target.Column = 2 Or Target.Column = 3 Or _
      Target.Column = 9 Or Target.Column = 10 Or _
      Target.Column = 16 Or Target.Column = 17 Or _
      Target.Column = 22 Or Target.Column = 23 Then  ' eine gültige Eingabe-Spalte ?
      For iIndex = 0 To UBound(iSpalte)          ' alle Spalten abarbeiten/vergleichen
         If Target.Column = iSpalte(iIndex) Then ' ist es die Eingabespalte ?
            If Application.WorksheetFunction.CountIf(Columns(Target.Column), _
               Target.Value) > 1 Then  ' zählen in der Eingabespalte
               MsgBox "die Eingabe """ & Target.Value & """ gibt es" & Chr(10) & _
                  "in der Spalte """ & Chr(Asc("@") + Target.Column) & """ bereits.", _
                  48, "   Hinweis für " & Application.UserName
               Target.Value = ""                       ' die Eingabe löschen
               Cells(Target.Row, Target.Column).Select ' Cursor auf die Eingabezelle
               Exit For
            End If
         Else                                    ' es ist NICHT die Eingabspalte !
            If Application.WorksheetFunction.CountIf(Columns(iSpalte(iIndex)), _
               Target.Value) > 0 Then  ' zählen in den NICHT Eingabespalten
               MsgBox "die Eingabe """ & Target.Value & """ gibt es" & Chr(10) & _
                  "in der Spalte """ & Chr(Asc("@") + iSpalte(iIndex)) & """ bereits.", _
                  48, "   Hinweis für " & Application.UserName
               Target.Value = ""                       ' die Eingabe löschen
               Cells(Target.Row, Target.Column).Select ' Cursor auf die Eingabezelle
               Exit For
            End If
         End If
      Next iIndex
   End If
End Sub 


Gruß Peter

AW: exel..doppelte einträge verhindern
16.07.2007 11:31:29
weingartner
Hallo Peter !
yeah !!!!!!!!!! das wars ein recht herzliches dankeschön aus wien.
Mfg Ernst

AW: exel..doppelte einträge verhindern
17.07.2007 11:29:57
weingartner
Hallo Peter !
Habe schon wieder ein kleines Problem...
gibt es eine möglichkeit bei der formel die du mir geschrieben hast wo er mich zwar auf doppelte einträge aufmerksam macht ich jedoch die möglichkeit habe per ja oder nein den eintrag trozdem zu tätigen.....
das hat sich leider erst jetzt in der Praxis herausgestellt ,das dies manchmal erforderlich ist......

AW: exel..doppelte einträge verhindern
17.07.2007 14:36:13
Peter
Hallo Ernst,
dann versuch es so:


'
'   Wenn eine Eingabe in Spalte B, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte C, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte I, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte J, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte P, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte Q, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte V, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'   Wenn eine Eingabe in Spalte W, dann keine doppelten in Spalte(n) B,C,I,J,P,Q,V,W
'
'   Das wär's was ich konkret brauchen würde. Nach jeder Eingabe sollten folgende
'   Spalten (B, C, I, J, P, Q, V, W) auf doppelte Einträge überprüft werden...
'
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iSpalte   As Variant  ' die Eingabe- und die zu vergleichenden Spalten
Dim iIndex    As Integer  ' Index für den Spalten-Array
   If Target.Count > 1 Then Exit Sub   ' mehr als eine Zelle markiert ?
   If Target.Value = "" Then Exit Sub  ' ist die Zelle gefüllt ?
'
'                  B  C  I   J   P   Q   V   W
   iSpalte = Array(2, 3, 9, 10, 16, 17, 22, 23) ' die Spalten-Nummern als Array
   If Target.Column = 2 Or Target.Column = 3 Or _
      Target.Column = 9 Or Target.Column = 10 Or _
      Target.Column = 16 Or Target.Column = 17 Or _
      Target.Column = 22 Or Target.Column = 23 Then  ' eine gültige Eingabe-Spalte ?
      For iIndex = 0 To UBound(iSpalte)          ' alle Spalten abarbeiten/vergleichen
         If Target.Column = iSpalte(iIndex) Then ' ist es die Eingabespalte ?
            If Application.WorksheetFunction.CountIf(Columns(Target.Column), _
               Target.Value) > 1 Then  ' zählen in der Eingabespalte
               If MsgBox("die Eingabe """ & Target.Value & """ gibt es " & _
                  "in der Spalte """ & Chr(Asc("@") + Target.Column) & """ bereits." _
                  & Chr(10) & "Wollen Sie den Eintrag trotzdem übernehmen?", _
                  vbYesNo + vbQuestion, "    nur zur Sicherheit.") = vbYes Then
                  Exit Sub
                Else
                  Target.Value = ""                       ' die Eingabe löschen
                  Cells(Target.Row, Target.Column).Select ' Cursor auf die Eingabezelle
                  Exit For
               End If
            End If
         Else                                    ' es ist NICHT die Eingabspalte !
            If Application.WorksheetFunction.CountIf(Columns(iSpalte(iIndex)), _
               Target.Value) > 0 Then  ' zählen in den NICHT Eingabespalten
               If MsgBox("die Eingabe """ & Target.Value & """ gibt es " & _
                  "in der Spalte """ & Chr(Asc("@") + Target.Column) & """ bereits." _
                  & Chr(10) & "Wollen Sie den Eintrag trotzdem übernehmen?", _
                  vbYesNo + vbQuestion, "    nur zur Sicherheit.") = vbYes Then
                  Exit Sub
                Else
                  Target.Value = ""                       ' die Eingabe löschen
                  Cells(Target.Row, Target.Column).Select ' Cursor auf die Eingabezelle
                  Exit For
               End If
            End If
         End If
      Next iIndex
   End If
End Sub


Gruß aus Hamburg, Peter

AW: exel..doppelte einträge verhindern
17.07.2007 14:42:00
Peter
Hallo Ernst,
wenn man einfach kopiert, kann es zu Fehlern kommen:
in der zweiten Abfrage muss es so heußen:
"in der Spalte """ & Chr(Asc("@") + iSpalte(iIndex)) & """ bereits." _
Gruß Peter

AW: exel..doppelte einträge verhindern
17.07.2007 16:27:00
weingartner
Hallo Peter !
Genial,,hätte nicht gedacht das sich das machen lässt !
Danke..und schöne grüße aus wien
Gruß Ernst

AW: exel..doppelte einträge verhindern
17.07.2007 17:10:58
weingartner
Hallo Peter !
hätte da noch eine Grundsatzfrage..da meine Datei auf einem server liegt und verschiedene Benutzer darauf zugreifen kommt es vor das ein User schreibgeschützt öffnet ,weil ein anderer bereits die Datei bearbeitet ....in so einem Fall ist zwar das eingeben von werten möglich jedoch lässt sich das ganze nur unter einer kopie speichern und die daten fehlen in der original Datei ist das als gegeben anzusehen oder gibt es auch für so etwas eine Lösung ?
mfg Ernst

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige