Anzeige
Archiv - Navigation
1472to1476
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

Datenüberprüfung - Liste

Datenüberprüfung - Liste
09.02.2016 10:04:44
Uwe
Hallo liebe Experten,
Meine Tabelle beinhaltet jeden Monat eine unterschiedliche Anzahl von Zeilen, von denen immer zumindest in den Spalten A-L Werte stehen. In Spalte M hinterlege ich mit der Datenüberprüfung eine Dropdownliste. Meinen Makro habe ich so konfiguriert, dass dieser die Dropdown-Liste immer bis zur Zeile 2000 (mehr gab es noch nie) befüllt und dann die leeren Zeilen wieder löscht.
Ich würde gerne im Makro hinterlegen, dass die "Dropdown-Liste" in Spalte M immer nur bis zur letzten befüllten Zelle in Spalte A reicht. Damit würde das trotz Makro zeitaufwendige Löschen der leeren Zeilen entfallen.
Mir fehlt als VBA-Anfänger jedoch noch eine Idee, wie das zu bewerkstelligen ist.
Kann jemand helfen?

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenüberprüfung - Liste
09.02.2016 10:26:35
Michael
Hallo Uwe!
Teste mal so:
Sub Liste()
Dim Ws As Worksheet
Dim Bereich As Range
'Auf dem aktiven Tabellenblatt, ggf. ändern
Set Ws = ActiveSheet
With Ws
'Bereich für Datenüberprüfung bestimmen, hier:
'Spalte M von Zeile 2 bis zur letzten gefüllten Zeile in A ,ggf. ändern
Set Bereich = .Range("M2:M" & .Cells(.Rows.Count, 1).End(xlUp).Row)
End With
'Datenüberprüfung im Bereich setzen, hier:
'Liste mit 5 Pseudo-Werten, entsprechend ändern
With Bereich.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Lorem,Ipsum,Dolor,Sit,Amet"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Kommentare sind im Code. Welche Datenüberprüfung Du brauchst, musst Du mangels Info selbst anpassen. Klappt?
LG
Michael

Anzeige
AW: Datenüberprüfung - Liste
09.02.2016 10:51:02
Uwe
Hallo Michael,
das ist ja der Hammer. Genau so sollte es sein. Das funktioniert wunderbar.
Ich möchte Deine Unterstützung nicht überbeanspruchen, hoffe aber, ich darf noch eine weitere Frage hierzu stellen.
Wie erhalte ich Rahmen um die Dropdown-Zellen in Spalte M und auch in Spalte N, deren Zellen frei editierbar sind?

AW: Datenüberprüfung - Liste
09.02.2016 11:24:43
Michael
Hallo Uwe!
das ist ja der Hammer. Genau so sollte es sein. Das funktioniert wunderbar.
Freut mich, Dankeschön!
hoffe aber, ich darf noch eine weitere Frage hierzu stellen.
Für Fragen ist das Forum da! In dem Fall ist es ja eine Folgefrage - gänzlich neue Themen solltest Du aber in einem neuen Faden aufmachen.
Mit Rahmen um M und N - ich hab noch einen Teil auskommentiert, und zwar, dass zunächst im Bereich plus rechter Nebenspalte die Rahmenlinien zunächst rückgesetzt/entfernt werden; wenn Du das auch haben willst, musst Du an entsprechender Stelle das Auskommentieren aufheben.
Sub Liste()
Dim Ws As Worksheet
Dim Bereich As Range
'Auf dem aktiven Tabellenblatt, ggf. ändern
Set Ws = ActiveSheet
With Ws
'Bereich für Datenüberprüfung bestimmen, hier:
'Spalte M von Zeile 2 bis zur letzten gefüllten Zeile in A ,ggf. ändern
Set Bereich = .Range("M2:M" & .Cells(.Rows.Count, 1).End(xlUp).Row)
End With
''    +++ Optional, wenn gewünscht Auskommentierung aufheben +++
''    Rahmenlinien im oben definierten Bereich + rechter Nebenspalte aufheben
'    With Bereich.Resize(Bereich.Rows.Count, 2)
'        .Borders(xlDiagonalDown).LineStyle = xlNone
'        .Borders(xlDiagonalUp).LineStyle = xlNone
'        .Borders(xlEdgeLeft).LineStyle = xlNone
'        .Borders(xlEdgeTop).LineStyle = xlNone
'        .Borders(xlEdgeBottom).LineStyle = xlNone
'        .Borders(xlEdgeRight).LineStyle = xlNone
'        .Borders(xlInsideVertical).LineStyle = xlNone
'        .Borders(xlInsideHorizontal).LineStyle = xlNone
'    End With
'Datenüberprüfung im Bereich setzen, hier:
'Liste mit 5 Pseudo-Werten, entsprechend ändern
With Bereich.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Lorem,Ipsum,Dolor,Sit,Amet"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
'Einfache, gesamte Rahmenlinie in Spalte M und N, bezogen auf
'den oben definierten Bereich
Set Bereich = Bereich.Resize(Bereich.Rows.Count, 2)
Bereich.Borders(xlDiagonalDown).LineStyle = xlNone
Bereich.Borders(xlDiagonalUp).LineStyle = xlNone
With Bereich.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Bereich.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Bereich.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Bereich.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Bereich.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Bereich.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End Sub
Passt?
LG
Michael

Anzeige
AW: Datenüberprüfung - Liste
09.02.2016 11:55:42
Uwe
Ganz hervorragend. Vielen lieben Dank. Jetzt sind die Skripte viel flüssiger.

Freut mich! Danke für die Rückmeldung, owT
09.02.2016 12:32:42
Michael

@Michael
09.02.2016 12:27:22
Rudi
Hallo,
     With Bereich.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Bereich.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Bereich.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Bereich.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
kannst du einfach durch
Bereich.Borderaround(weight:=xlthin, linestyle:=xlcontinuous)

ersetzen.
Gruß
Rudi

Anzeige
@ Rudi - Mercí! Schönen Tag! owT
09.02.2016 12:32:12
Michael

AW: Datenüberprüfung - Liste
09.02.2016 13:22:04
Uwe
Zu früh gefreut. Alles paßt soweit.
Jedoch nach dem Speichern (mit Kompatibilitätsabfrage) und dem erneuten Öffnen der .xls-Datei sind die Dropdownfelder ohne Funktion.
Vor dem letzten Schritt des Makros, also dem Speichern mit Kompatibilitätsabfrage, ist noch alles in Ordnung. Daraufhin habe ich die Datei manuell im .xlsx-Format gespeichert und wieder geöffnet. Das hat leider auch nichts gebracht.
Habt Ihr einen Tipp für mich, woran das nun wieder liegen könnte? Vielen Dank dafür im Voraus.

AW: Datenüberprüfung - Liste
09.02.2016 13:37:15
Michael
Hallo!
Kommt drauf an wie Du in Deinem (uns unbekannten) Code speicherst - vermutlich übergibst Du eine falsche Dateiendung; mit .xlsx werden keine Makros gespeichert, dafür ist .xlsm erforderlich.
Fragen: Die Ursprungsdatei ist eine .xls (erstellt mit Excel-Version vor 2007)? Du speicherst die Datei über ein Makro? Welchen Dateityp gibst Du da an?
LG
Michael

Anzeige
AW: Datenüberprüfung - Liste
09.02.2016 13:54:36
Uwe
Hallo Michael,
die Ursprungsdatei ist eine in Excel 2007 erstellte .xls. Alle meine Makros liegen in der Personal.xlsb.
Die .xls wird also über einen Makro der Personal.xlsb bearbeitet, im selben Format gespeichert und wieder geschlossen. Und kurz vor dem finalen Speichern erhalte ich die Kompatibilitätsabfrage. Sofern ich da auf weiter klicke und die Datei abgespeichert wird, sind die Dropdownfelder weg. Sehr sehr merkwürdig...

AW: Datenüberprüfung - Liste
09.02.2016 14:16:21
Michael
Hallo Uwe!
Ist in der Tat sehr merkwürdig. Gibt Dir der Kompatibilitätshinweis noch Infos zu Funktionalitätsverlusten o.Ä.?
Speichere die Ursprungsdatei dennoch einmal manuell als .xlsx ab - und bearbeite dann über Deine Makros in der persönlichen Arbeitsmappe. Bleibt das Problem bestehen?
LG
Michael

Anzeige
AW: Datenüberprüfung - Liste
09.02.2016 14:25:25
Uwe
Ok, habe ich gemacht. Nach dem Öffnen erhalten ich folgenden Hinweis: "Von Excel wurde unlesbarer Inhalt in der "Datei.xlsx" gefunden. Möchten Sie den Inhalt dieser Arbeitsmappe wiederherstellen? Wenn Sie der Quelle dieser Arbeitsmappe vertrauen, klicken Sie auf "Ja"".
Ich habe mal vertraut und auf "Ja" geklickt und dann ging es auch gleich weiter mit
"Die Datei konnte von Excel geöffnet werden, in dem der nicht lesbare Inhalt repariert oder entfernt wurde". Entferntes Feature: Datenüberprüfung von xl/worksheets/sheet1.xml-Part.
Hatte ich jetzt so auch noch nie...

AW: Datenüberprüfung - Liste
09.02.2016 14:40:55
Michael
Hmm... Du hast die Datei manuell als .xlsx gespeichert, dann Deine Makros drüberlaufen lassen - und beim erneuten Öffnen kam die Meldung bzgl. entfernter Features? Nochmal die Frage: ist irgendwo in Deinen Makros in der persönlichen Arbeitsmappe ein Punkt der die Datei mit einem "alten" Dateityp (.xls) speichert?
Ansonsten bin ich überfragt, da ich's nicht nachvollziehen oder -stellen kann.
LG
Michael

Anzeige
AW: Datenüberprüfung - Liste
09.02.2016 14:56:47
Uwe
Genau so. Es gibt im Makro eine .xls-Datei, von der eine Überschrift eingefügt wird. Aber zwischendurch mit die .xlsx nicht gespeichert, erst zum Schluß.
Trotzdem vielen Dank für Deine (Eure) Mühe. Ich habe wieder etwas gelernt. :-)
Nun verwende ich erst einmal meinen "Zeilenlösch"-Makro weiter. Der hat bisher funktioniert, dauerte nur ein paar Minuten. Vielleicht komme ich ja mal durch einen Zufall darauf, was hier falsch gelaufen ist.
Gruß,
Uwe

Okay, viel Erfolg! owT
09.02.2016 15:10:36
Michael

8 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige