119678
Goto Top

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

Content-Key: 258709

Url: https://administrator.de/contentid/258709

Printed on: April 20, 2024 at 02:04 o'clock

Member: colinardo
Solution colinardo Dec 30, 2014 updated at 18:01:13 (UTC)
Goto Top
Hallo Charly,
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
Grüße Uwe
Mitglied: 119678
119678 Dec 30, 2014 at 17:33:12 (UTC)
Goto Top
Hallo Uwe,

herzlichen Dank für deine Mühe - 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

Charly
Member: colinardo
colinardo Dec 30, 2014 updated at 20:55:51 (UTC)
Goto Top
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 face-wink, ist oben korrigiert.
Danke nochmal und einen guten Rutsch ins neue Jahr
Wünsche ich Dir ebenfalls.

Grüße Uwe