
119678
30.12.2014, aktualisiert um 18:30:48 Uhr
VBA Zellen markieren bis Inhalt sich ändert
stelle mich mal wieder blöd an.
Das Problem:
es besteht eine Tabelle mit Nummern in der Spalte 1. Die Nummern können über mehrere Zeilen gleich sein aber auch sich ändern.
Nun wollte ich den Bereich der gleichen Nummern mit den Inhalt der daneben liegenden Spalten markieren, in einer PDF Datei abspeichern,
(dateiname ist der Inhalt aus A2) also die Nummer die in der Spalte 1 steht. Den bearbeiteten Bereich löschen und die nachfolgenden Daten
nach oben ziehen. Nun wieder die gleichen Nummern in Spalte 1 markieren, im PDF ablegen und so weiter.
Bei einzelnen Zeilen bekomme ich es schon hin, diese in ein PDF zu kopieren - aber ich schaffe es nicht alle gleichlautenden Zellen zu markieren.
Beispiel:
Spalte 1 Spalte 2 Spalte 3 Spalte 4
111005 Muster 1 grün breit
111005 Weber gelb schmal
111005 Sommer blau lang
120687 Winter weiß kalt
241001 Herbst braun windig
241001 Frühling grün mild
jetzt soll per VBA die Datensätze von 111005 als PDF abgelegt werden danach die Datensätze von 111005 gelöscht werden
120687 und nachfolgende nach oben rücken und der Datensatz 120687 als PDF abgelegt werden ..... uns so weiter bis
kein Datensatz mehr da ist.
Hoffe ich habe mich einigermaßen verständlich ausgedrückt und es hat jemand einen Lösungsvorschlag
Danke
Charly
Das Problem:
es besteht eine Tabelle mit Nummern in der Spalte 1. Die Nummern können über mehrere Zeilen gleich sein aber auch sich ändern.
Nun wollte ich den Bereich der gleichen Nummern mit den Inhalt der daneben liegenden Spalten markieren, in einer PDF Datei abspeichern,
(dateiname ist der Inhalt aus A2) also die Nummer die in der Spalte 1 steht. Den bearbeiteten Bereich löschen und die nachfolgenden Daten
nach oben ziehen. Nun wieder die gleichen Nummern in Spalte 1 markieren, im PDF ablegen und so weiter.
Bei einzelnen Zeilen bekomme ich es schon hin, diese in ein PDF zu kopieren - aber ich schaffe es nicht alle gleichlautenden Zellen zu markieren.
Beispiel:
Spalte 1 Spalte 2 Spalte 3 Spalte 4
111005 Muster 1 grün breit
111005 Weber gelb schmal
111005 Sommer blau lang
120687 Winter weiß kalt
241001 Herbst braun windig
241001 Frühling grün mild
jetzt soll per VBA die Datensätze von 111005 als PDF abgelegt werden danach die Datensätze von 111005 gelöscht werden
120687 und nachfolgende nach oben rücken und der Datensatz 120687 als PDF abgelegt werden ..... uns so weiter bis
kein Datensatz mehr da ist.
Hoffe ich habe mich einigermaßen verständlich ausgedrückt und es hat jemand einen Lösungsvorschlag
Danke
Charly
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 258709
Url: https://administrator.de/forum/vba-zellen-markieren-bis-inhalt-sich-aendert-258709.html
Ausgedruckt am: 04.05.2025 um 20:05 Uhr
3 Kommentare
Neuester Kommentar
Hallo Charly,
guckst du hier:
export_filtered_as_pdf_258709.xlsm
Grüße Uwe
guckst du hier:
export_filtered_as_pdf_258709.xlsm
Sub FilterAndSave()
'Exportpfad für die PDF Dateien
Const EXPORT_PATH = "D:\export"
'Variablen
Dim keys, strNumber As String, cell As Range, fso As Object, dic As Object, i as integer
'Objects
Set dic = CreateObject("Scripting.Dictionary")
Set fso = CreateObject("Scripting.FileSystemObject")
'Ausgabeordner erstellen falls nicht vorhanden
If Not fso.FolderExists(EXPORT_PATH) Then MkDir EXPORT_PATH
Application.ScreenUpdating = False
With ActiveSheet
'AutoFilter deaktivieren
.AutoFilterMode = False
'einmalige Nummern im Dictionary speichern
For Each cell In .Range("A2:A" & .Cells(Rows.Count, 1).End(xlUp).Row)
If cell.Value <> "" And Not dic.Exists(cell.Value) Then
dic.Add cell.Value, ""
End If
Next
keys = dic.keys
'Für alle Nummern im Dictionary
For i = 0 To dic.Count - 1
strNumber = keys(i)
'Filtere das Sheet nach der Nummer
.UsedRange.AutoFilter 1, strNumber
'Speichere das Sheet als PDF
.ExportAsFixedFormat xlTypePDF, EXPORT_PATH & "\" & strNumber & ".pdf"
Next
'AutoFilter deaktivieren
.AutoFilterMode = False
'Exportierte Zeilen löschen
.Range("A2:E" & .Cells(Rows.Count, 1).End(xlUp).Row).ClearContents
End With
Application.ScreenUpdating = True
MsgBox "Fertig", vbInformation
Set fso = Nothing
Set dic = Nothing
End Sub
Zitat von @119678:
- vba hat nur kurz ein paarmal gemeckert weil "dic" und "i" nicht
deklariert waren und
bei .ExportAsFixedFormat xlPDF habe ich Type noch eingefügt bei xlTypePDF ...
Ja, da war ich etwas fix - vba hat nur kurz ein paarmal gemeckert weil "dic" und "i" nicht
deklariert waren und
bei .ExportAsFixedFormat xlPDF habe ich Type noch eingefügt bei xlTypePDF ...
Danke nochmal und einen guten Rutsch ins neue Jahr
Wünsche ich Dir ebenfalls.Grüße Uwe