Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
664to668
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
664to668
664to668
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Doppelte Werteingaben verhindern

Doppelte Werteingaben verhindern
08.09.2005 21:16:25
hansueli
Hallo zusammen
Mein Problem:
Ich habe Variabeln für eine NC- Programmierung in eine Tabelle geordnet.
In Spalte A sind Variabeln, in Spalte B sind Beschreibungen zu Spalte A,
In Spalte C sind Variabeln, in Spalte D sind Beschreibungen zu Spalte C,
usw.
Wie kann ich die Werte der Spalten mit den Variabelneingaben abfragen. Und wie kann ich den doppelten Eintrag verhindern (MsgBox = die Variable besteht schon). Die Anzahl der Spalten sollte variabel sein.
Ich habe geforscht aber ohne Erfolg.
Ich hoffe ich habe mich verständlich ausgedrückt.
Besten Dank für jeden Tipp von den suoernetten Profils in diesem Forum
Gruss Hansueli

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelte Werteingaben verhindern
08.09.2005 21:37:19
Ramses
Hallo
Dein Betreff leicht modifiziert "Doppelte eingaben verhindern" ergibt 54 Treffer
Doppelte Eingaben verhindern"
Um Programmierung wirst du nicht rumkommen wenn du eine MsgBox haben willst.
Ansonsten könntest du das mit "Format - Bedingte Formatierung" lösen.
Gibt zwar keine MsgBox, aber du kannst die Zelle rot einfärben.
Für einen Programmvorschlag sind zu wenige Informationen über deinen Arbeitsablauf vorhanden.
Gruss Rainer
Anzeige
AW: Doppelte Werteingaben verhindern
08.09.2005 21:47:25
hansueli
hallo rainer
ich habe die Einträg schon angeschaut aber nicht wirklich etwas für mein Problem gefunden.
Das mit der "Format - Bedingte Formatierung" habe ich nur auf eine Spalte begrenzen können. Ist es auch über mehre Spalten (z.b A, C, E usw. möglich)
Beispiel für eventuelle Hilfe in VBA:
Ich geb in Zelle A1 die Variable "falz" ein. Jetzt dar auf dem ganzen Tabellenblatt diese Variable nicht mehr eingeben werden können (nur in den dafür vorgesehen Spalten.
Das heisst in Spalte A, C, E usw.
Würde mich über weitere Hilfe, Vorschläge sehr freuen
Gruss Hansueli
AW: Doppelte Werteingaben verhindern
08.09.2005 21:59:40
Ramses
Hallo
Sorry, irgendwie bin ich dafür wohl zu doof :-)
Deine Frage:
"..Und wie kann ich den doppelten Eintrag verhindern.."
Deine Antwort:
"... Jetzt dar auf dem ganzen Tabellenblatt diese Variable nicht mehr eingeben werden können (nur in den dafür vorgesehen Spalten...."
Verstehen muss ich das aber nicht,... oder ?
Gruss Rainer
Anzeige
AW: Doppelte Werteingaben verhindern
08.09.2005 22:19:27
hansueli
Hallo Rainer
Ich Versuchs jetzt auf eine andere Art:

Die Datei https://www.herber.de/bbs/user/26406.xls wurde aus Datenschutzgründen gelöscht

Ich habe die Tabelle mal kurz zusammengestellt. Sorry wenn ich mich nicht klar ausgedrückt habe.
Ich hoffe du kannst mir doch noch helfen
Besten Dank zum voraus
Gruss Hansueli
Schon besser :-)
08.09.2005 22:28:57
Ramses
Hallo
Mauszeiger auf Tabellenregister
Rechte Maustaste
Code anzeigen
Den Code dort einfügen
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim srcRes As Range
    'Abbrechen in allen geraden Spalten B,D,F usw.
    If Target.Column Mod 2 = 0 Then Exit Sub
    Application.EnableEvents = False
    Set srcRes = Columns(Target.Column).Find(what:=Target.Value, lookat:=xlWhole, LookIn:=xlValues)
    If Not srcRes Is Nothing Then
        MsgBox Target.Value & " wird bereits verwendet", vbCritical + vbOKOnly, "VAR-Fehler"
        Target.Value = ""
        Target.Select
    End If
    Application.EnableEvents = True
End Sub

Gruss Rainer
Anzeige
Korrektur...
08.09.2005 22:32:58
Ramses
Hallo
es muss berücksichtigt werden, dass der eigene Wert nicht gefunden wird
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim srcRes As Range
    Dim tmpVal As Variant
    'Abbrechen in allen geraden Spalten B,D,F usw.
    If Target.Column Mod 2 = 0 Then Exit Sub
    Application.EnableEvents = False
    tmpVal = Target.Value
    Target.Value = ""
    Set srcRes = Columns(Target.Column).Find(what:=Target.Value, lookat:=xlWhole, LookIn:=xlValues)
    If Not srcRes Is Nothing Then
        MsgBox Target.Value & " wird bereits verwendet", vbCritical + vbOKOnly, "VAR-Fehler"
        Target.Value = ""
        Target.Select
        Exit Sub
    End If
    Target = tmpVal
    Application.EnableEvents = True
End Sub

Gruss Rainer
Anzeige
geht noch nicht ganz
08.09.2005 22:40:32
hansueli
Hallo Rainer
Besten Dank für dein Hilfe bin echt froh über so toll Excelspezialisten.
Eine Frage habe ich noch ! Wieso kann ich jetzt nicht in die Spalten A, C, E und so wieter meine Variabeln eintragen es erscheint immer gleich die Box ("falz schon vorhanden") habe aber diese Bezeichungen noch nicht eingetragen.
Was muss ich noch ändern.
Betsen Dank für deine Hilfe
Gruss Hansueli
Du musst die korrigierte Version nehmen o.T:
08.09.2005 22:55:28
Ramses
...
AW: Du musst die korrigierte Version nehmen o.T:
08.09.2005 22:59:35
hansueli
Hallo Rainer
Es geht auch dann nicht. Ich will ja in Spalte A, C, E die Variabelbezeichungen überprüfen. Als erstes kommt der Fehler aber leer ohne Angabe welche Variable. Und danach kann ich eingeben was ich will auch doppelte Werte es kommt keine Box mehr.
Die Werte können so oft wie ich will eingetragen werden.
Ich bin dir sehr dankbar für jede Hilfe. Bitte schau dir das nochmals an bitte
Besten Dank für dein Verständnis
Gruss Hansueli
Anzeige
AW: Du musst die korrigierte Version nehmen o.T:
08.09.2005 23:12:08
Leo
Hi,
versuchs mal so:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim srcRes As Range
Dim tmpVal As Variant
'Abbrechen in allen geraden Spalten B,D,F usw.
If Target.Column Mod 2 = 0 Then Exit Sub
On Error GoTo ERRH
Application.EnableEvents = False
tmpVal = Target.Value
Target.Value = ""
Set srcRes = Columns(Target.Column).Find(what:=Target.Value, lookat:=xlWhole, LookIn:=xlValues)
If Not srcRes Is Nothing Then
MsgBox Target.Value & " wird bereits verwendet", vbCritical + vbOKOnly, "VAR-Fehler"
Target.Value = ""
Target.Select
Application.EnableEvents = True
Exit Sub
End If
Target = tmpVal
ERRH:
Application.EnableEvents = True
End Sub

Anzeige
AW: Du musst die korrigierte Version nehmen o.T:
08.09.2005 23:20:47
hansueli
Hallo leo
Ich habe den Code eingefügt. Die Sache ist so, dass ich jetzt immer noch Mehrfach (falz,falz usw. " Doppelte Werte" Eingaben machen kann in Spalten A, C, E usw.
Kannst du mir sagen was ich ändern muss.
Besten Dank für deine Hilfe
Gruss Hansueli
AW: Du musst die korrigierte Version nehmen o.T:
08.09.2005 23:33:11
Leo
Hi,

Private Sub Worksheet_Change(ByVal Target As Range)
Dim srcRes As Range
Dim tmpVal As Variant
'Abbrechen in allen geraden Spalten B,D,F usw.
If Target.Column Mod 2 = 0 Then Exit Sub
On Error GoTo ERRH
Application.EnableEvents = False
tmpVal = Target.Value
Target.Value = ""
Set srcRes = Columns(Target.Column).Find(what:=tmpVal, lookat:=xlWhole, LookIn:=xlValues)
If Not srcRes Is Nothing Then
MsgBox Target.Value & " wird bereits verwendet", vbCritical + vbOKOnly, "VAR-Fehler"
Target.Value = ""
Target.Select
Application.EnableEvents = True
Exit Sub
End If
Target = tmpVal
ERRH:
Application.EnableEvents = True
End Sub

Schließ mal Excel und starte es neu, nachdem du den Code reinkopiert hast, aber vorher speichern.
mfg Leo
Anzeige
AW: Du musst die korrigierte Version nehmen o.T:
08.09.2005 23:54:14
hansueli
Hallo zusammen
Ist es jetzt auch noch möglich die den schon vorhanden Wert in der msgbox anzuzeigen.
Damit der man weiss welche Variable schon vorhanden ist
Vorerst besten Dank euch beiden
Gruss Hansueli
AW: Du musst die korrigierte Version nehmen o.T:
09.09.2005 00:02:54
hansueli
Hallo zusammen
Ich habe noch eine Frage:
Wenn ich jetzt in Spalte A einen Wert eintrage z.B "falz" dann kommt die Meldung das diese Variable schon vorhanden ist. Trage ich aber in Spalte C z.B "falz" ein so kann ich dass obschon ja in der Spalte A der genau gleiche Begriff vorkommt.
Könnt ihr beiden mir da nochmals unter die Arme greifen bitte.
Ich dank euch tausend mal
Gurss Hansueli
Anzeige
AW: Du musst die korrigierte Version nehmen o.T:
09.09.2005 00:30:51
Leo
Hi,
das mit der Msgbox ist keine gute Idee. Wenn das viele Einträge sind ist es erstens unübersichtlich und zweitens können nur ca. 1024 Teichen angezeigt werden.
Besser wäre eine Userform mit Listbox.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim srcRes As Range
Dim tmpVal As Variant
'Abbrechen in allen geraden Spalten B,D,F usw.
If Target.Column Mod 2 = 0 Then Exit Sub
On Error GoTo ERRH
Application.EnableEvents = False
tmpVal = Target.Value
Target.Value = ""
Set srcRes = [a2:a65536,c2:c65536,e2:e65536].Find(what:=tmpVal, lookat:=xlWhole, LookIn:=xlValues)
If Not srcRes Is Nothing Then
MsgBox Target.Value & " wird bereits verwendet", vbCritical + vbOKOnly, "VAR-Fehler"
Target.Value = ""
Target.Select
Application.EnableEvents = True
Exit Sub
End If
Target = tmpVal
ERRH:
Application.EnableEvents = True
End Sub

mfg Leo
Anzeige
AW: Du musst die korrigierte Version nehmen o.T:
09.09.2005 00:33:05
Ramses
Hallo
... oder so mit Auswahl
Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
    Dim srcRes As Range
    Dim tmpVal As Variant
    Dim Qe As Integer, i As Integer
    'Abbrechen in allen geraden Spalten B,D,F usw.
    If Target.Column Mod 2 = 0 Or IsEmpty(Target) Then Exit Sub
    Application.EnableEvents = False
    tmpVal = Target.Value
    Target.Value = ""
    For i = 1 To Target.Column Step 2
        Set srcRes = Columns(i).Find(what:=tmpVal, lookat:=xlWhole, LookIn:=xlValues)
        If Not srcRes Is Nothing Then
            Qe = MsgBox(Target.Value & " wird bereits verwendet in Zelle: " & srcRes.Address & vbCrLf & _
                "Möchten Sie den aktuellen Wert : " & tmpVal & " halten und zur vorherigen Fundstelle wechseln ?", vbCritical + vbYesNo, "VAR-Fehler")
            If Qe = vbYes Then
                Target.Value = tmpVal
                srcRes.Select
                srcRes.ClearContents
                Application.EnableEvents = True
                Exit Sub
            End If
            Target.Value = ""
            Target.Select
            MsgBox "Doppelte Variable wurde gelöscht", vbInformation + vbOKOnly, "VAR-Korrektur"
            Application.EnableEvents = True
            Exit Sub
        End If
    Next i
    Target = tmpVal
    Application.EnableEvents = True
End Sub


Gruss RAiner
AW: Du musst die korrigierte Version nehmen o.T:
09.09.2005 12:51:25
hansueli
Hallo Rainer
Besten Dank für deine super Hilfe ist echt der Hammer. Woher hast du den das Wissen für soolche Programmierungen. Kannst du mir ein Buch empfehlen oder sont eine gute Lernmöglichkeit aufzeigen.
Eine Frage habe ich noch:
Wie würde der Code aussehen wenn ich die Abfragen doch pro Spalte machen möchte.
Also Spalte A, C, E usw. in sich selber prüfen. Aber die beisen Msgbox mit den supergenauen angaben bleiben. Ich habe versuch das zu ändern. aber leider ohne Erfolg.
Ich habe die For- Schleife entfernt und geglaubt das währs. Aber leider kein Glück gehabt.
Wenn du Lust hast mir das noch zu zeigen bin ich dir sehr Dankbar.
Nochmals herzlichen Dank für deine super Hilfe.
Gruss Hansueli
AW: Du musst die korrigierte Version nehmen o.T:
08.09.2005 23:13:10
Leo
Hi,
durch das Exit sub werden die Events nicht wieder auf True gesetzt.
mfg Leo
Lapsus akzeptiert :-) Danke o.T.
08.09.2005 23:44:08
Ramses
...
AW: Doppelte Werteingaben verhindern
09.09.2005 00:43:35
Josef B
Hallo Hansueli
Nach dem du schon eine Variante mit VBA hast, nun noch eine Alternative ohne VBA mit Hilfe von Daten / Gültigkeit.
Siehe Anhang
https://www.herber.de/bbs/user/26409.xls
Gruss Josef

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige