Datenüberprüfung-Liste doppelte Einträge verhinder

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Datenüberprüfung-Liste doppelte Einträge verhinder
von: Laserpeak
Geschrieben am: 23.07.2015 11:31:59

Hi Leute, mein Chef fordert ein Makro, das in jede Zelle der Spalten B, C, D, E und F (mit jeweils unterschiedlichem Inhalt) eine Datenüberprüfung-Liste (so ein Dropdown) Automatisch beim Öffnen der Datei einfügt.
Der Bezug dieser Datenüberprüfung-Listen soll in der gleichen Spalte am gleichen Tabellenblatt liegen, d.h. alle ausgefüllten Zellen sind Bezug, darunter sollen bis zum Ende (Zeile 65536) ebenjene Dropdowns kommen.
Ein Makro soll automatisch die erste leere Zeile finden und den Bezug automatisch bei jedem Öffnen anpassen und gegebenenfalls erweitern.
Zudem sollen doppelte Inhalte des Bezugs nur einmal ausgegeben werden.
Ich habe bereits einiges herausgefunden und herumprobiert und hänge nur noch bei zwei Sachen:
1. In Spalte G (nach den ganzen Dropdowns) wird das Bearbeitungsdatum bei Doppelklick eingegeben und das Programm filtert alle Zeilen danach ob ein Bearbeitungsdatum vorhanden ist oder nicht, somit kann es sein dass die letzte angezeigte Zeile 1013 ist aber bereits bis 1043 die Zeilen ausgefüllt sind. Das Makro zeigt mir aber die ausgeblendete (da gefilterte) Zeile 1014 als erste leere an.
2. Wie kann ich es schaffen dass die doppelten Einträge ignoriert werden? (Hab mich in mehreren Foren schon umgesehen, es sind viele solche Anfragen dabei aber nicht das was ich brauche)
Falls benötigt kann ich den Code gerne offenlegen
LG Laserpeak

Bild

Betrifft: AW: Datenüberprüfung-Liste doppelte Einträge verhinder
von: ransi
Geschrieben am: 23.07.2015 11:46:22
Hallo,

das in jede Zelle der Spalten B, C, D, E und F (mit jeweils unterschiedlichem Inhalt) eine Datenüberprüfung-Liste (so ein Dropdown) Automatisch beim Öffnen der Datei einfügt.

Das gibt aber viele Dropdowns...
Bist du dir sicher ?
ransi

Bild

Betrifft: Datenüberprüfung-Liste doppelte Einträge verhinder
von: Laserpeak
Geschrieben am: 23.07.2015 11:54:49
Eben nicht JEDE, sondern z.B. 3 - 1043 sind schon ausgefüllt und sollen als Bezug verwendet werden, in 1044 - Rest sollen dann eben diese Datenüberprüfung-Listen eingefügt werden (die sieht man ja erst wenn man in die Zelle klickt) und wenn man z.B. 1044 - 1050 ausfüllt dann überprüft das Makro beim nächsten Öffnen die letzte gefüllte Zeile und setzt den Bezug auf 3 - 1050 und die Dropdowns kommen dann erst ab 1051
Ich hoffe ich hab es verständlich beschrieben
LG Laserpeak

Bild

Betrifft: Datenüberprüfung-Liste doppelte Einträge verhinder
von: Laserpeak
Geschrieben am: 23.07.2015 13:39:42
Hallo Leute
hier mal mein Code, könnte sich den bitte mal wer durchsehen, vielleicht findet jemand den Fehler

Private Sub Workbook_Open()
Call ComboBox1
Call ComboBox2
Call ComboBox3
Call ComboBox4
Call ComboBox5
   
End Sub
Sub ComboBox1()
    Dim Eleere As Long
    Dim Lvolle As Long
    Eleere = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Lvolle = Eleere - 1
    MsgBox Lvolle
    Range("$B$&Eleere:$B$65536").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="$B$2:$B$&Lvolle"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
Sub ComboBox2()
    Dim Eleere As Long
    Dim Lvolle As Long
    Eleere = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Lvolle = Eleere - 1
    MsgBox Lvolle
    Range("$C$&Eleere:$C$65536").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="$C$2:$C$&Lvolle"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
Sub ComboBox3()
    Dim Eleere As Long
    Dim Lvolle As Long
    Eleere = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Lvolle = Eleere - 1
    MsgBox Lvolle
    Range("$D$&Eleere:$D$65536").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="$D$2:$D$&Lvolle"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
Sub ComboBox4()
    Dim Eleere As Long
    Dim Lvolle As Long
    Eleere = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Lvolle = Eleere - 1
    MsgBox Lvolle
    Range("$E$&Eleere:$E$65536").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="$E$2:$E$&Lvolle"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
Sub ComboBox5()
    Dim Eleere As Long
    Dim Lvolle As Long
    Eleere = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Lvolle = Eleere - 1
    MsgBox Lvolle
    Range("$F$&Eleere:$F$65536").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="$F$2:$F$&Lvolle"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub


Bild

Betrifft: möglicher Fehler
von: Andre
Geschrieben am: 23.07.2015 14:55:13
Hallo Laserpeak,
wenn Du den Code postest und sagst, dass da ein Fehler ist, dann sage wie sich der Fehler äussert. Die meisten hier sind nicht im Besitz von Glaskugeln, um in die Zukunft zu sehen.
In deinem Code steht:

Range("$B$&Eleere:$B$65536").Select
Versuche es mal mit:
Range("$B$"&Eleere&":$65536").Select
Aber auch meine Hellseherfähigkeiten sind sehr begrenzt.
Gruß
Andre

Bild

Betrifft: AW: möglicher Fehler
von: Laserpeak
Geschrieben am: 23.07.2015 15:45:00
Der Fehler äußert sich insofern dass er die MsgBox Lvolle noch ausgibt, aber danach NICHTS mehr macht, keine Fehlermeldung und sonst auch Nichts
Danke für den Vorschlag, wird es gleich mal probieren

Bild

Betrifft: AW: möglicher Fehler
von: Laserpeak
Geschrieben am: 23.07.2015 15:47:41
Hab es jetzt probiert wie vorgeschlagen, jetzt kommt Error 400 (wenigstens mal eine Reaktion)
LG Laserpeak

Bild

Betrifft: AW: möglicher Fehler
von: Andre
Geschrieben am: 24.07.2015 12:05:12
Hallo Laserpeak,
Formula1:="$B$2:$B$&Lvolle" auch hier stimmen die Anführungs zeichen nicht.
$B$2:$B$ ist direkter Text, Lvolle aber nicht, denn dieses ist eine Variable und Du brauchst nur den Wert. Dieses muss Excel gesagt werden. Also Formula1:="$B$2:$B$"&Lvolle
Gruß
Andre

Bild

Betrifft: Datenüberprüfung-Liste doppelte Einträge verhinder
von: Laserpeak
Geschrieben am: 23.07.2015 15:41:46
Hallo Leute
hier mal mein Code, könnte sich den bitte mal wer durchsehen, vielleicht findet jemand den Fehler

Private Sub Workbook_Open()
Call ComboBox1
Call ComboBox2
Call ComboBox3
Call ComboBox4
Call ComboBox5
   
End Sub
Sub ComboBox1()
    Dim Eleere As Long
    Dim Lvolle As Long
    Eleere = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Lvolle = Eleere - 1
    MsgBox Lvolle
    Range("$B$&Eleere:$B$65536").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="$B$2:$B$&Lvolle"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
Sub ComboBox2()
    Dim Eleere As Long
    Dim Lvolle As Long
    Eleere = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Lvolle = Eleere - 1
    MsgBox Lvolle
    Range("$C$&Eleere:$C$65536").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="$C$2:$C$&Lvolle"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
Sub ComboBox3()
    Dim Eleere As Long
    Dim Lvolle As Long
    Eleere = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Lvolle = Eleere - 1
    MsgBox Lvolle
    Range("$D$&Eleere:$D$65536").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="$D$2:$D$&Lvolle"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
Sub ComboBox4()
    Dim Eleere As Long
    Dim Lvolle As Long
    Eleere = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Lvolle = Eleere - 1
    MsgBox Lvolle
    Range("$E$&Eleere:$E$65536").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="$E$2:$E$&Lvolle"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
Sub ComboBox5()
    Dim Eleere As Long
    Dim Lvolle As Long
    Eleere = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Lvolle = Eleere - 1
    MsgBox Lvolle
    Range("$F$&Eleere:$F$65536").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="$F$2:$F$&Lvolle"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Datenüberprüfung-Liste doppelte Einträge verhinder"