Anzeige
Archiv - Navigation
496to500
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
496to500
496to500
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Code erklären

Code erklären
13.10.2004 09:16:36
B
Wer kann diesen Code Kommentieren ?

Sub FilternUndDrucken()
Dim arr()
Dim iRow As Integer
Range("A:A").AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Range("J1"), Unique:=True
iRow = 2
Do Until IsEmpty(Cells(iRow, 4))
ReDim Preserve arr(iRow - 1)
arr(iRow - 1) = Cells(iRow, 4)
iRow = iRow + 1
Loop
Columns(4).ClearContents
For iRow = 1 To UBound(arr)
Columns(1).AutoFilter Field:=1, Criteria1:=arr(iRow)
ActiveSheet.PrintPreview
Next iRow
Range("A1").AutoFilter
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code erklären
Bert
Eine Beispielmappe wäre hilfreich.
Bert
AW: Code erklären
13.10.2004 10:07:22
Rolf
Hallo B,
ich hoffe, das hilft dir weiter

Sub FilternUndDrucken()
Dim arr()                                    'Datenfeld
Dim iRow As Integer                          'Zähler
'Spezialfilter setzen + Ausprägungen in Spalte "J" ausgeben
Range("A:A").AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Range("J1"), Unique:=True
iRow = 2                                     'iRow initialisieren
'alle Daten der Spalte 4 in Datenfeld speichern
Do Until IsEmpty(Cells(iRow, 4))
ReDim Preserve arr(iRow - 1)
arr(iRow - 1) = Cells(iRow, 4)
iRow = iRow + 1
Loop
Columns(4).ClearContents                     'Inhalte der Spalte 4 löschen
'alle im Datenfeld gespeichtern Werte als Filter in Spalte 1 setzen
'Anmerkung:
'das macht natürlich nur Sinn, wenn Spalte 4 Daten enthielt,
'die in Spalte 1 auftauchen
For iRow = 1 To UBound(arr)
Columns(1).AutoFilter Field:=1, Criteria1:=arr(iRow)
ActiveSheet.PrintPreview                  'Druckvorschau
Next iRow
Range("A1").AutoFilter                       'AutoFilter aus
End Sub

M.d.B. um feedback
Rolf
Anzeige
Ja, aber ...
B
Danke erstmal für die Kommentare, das Problem ist, daß nach dem Aufrufen des Makros der folgende Fehler auftaucht: Fehlender oder ungültiger Feldname im Zielbereich !!
Dabei bleibt der Cursor auf der 4. Zeile Range("A:")......
Kannst Du das nachvollziehen ?
AW: Ja, aber ...
13.10.2004 10:49:41
Rolf
Hallo B,
nochmals: das Makro macht nur Sinn, wenn die Daten
der Spalte 4 sich als Filter in Spalte 1 eignen.
Am besten bringst du mal ein repräsentatives Beispiel.
H.G.
Rolf
AW: Ja, aber ...
B
Aus einer Tabelle die Auflistungen zu Kostenstellen haben sollen pro Kostenstelle ein Blatt ausgedruckt werden.
Die Tabelle sieht so aus:
KSTST BEZEICHN WERT1 .. bis Wert10
80 Maschine1 100080 ...
80 Maschine2 100080 ...
80 Maschine3 100080
100 Maschine1 1000100
100 Maschine2 1000100
... ..... ....
Zur Zeit werden mit Datenfilter die Daten z.b der Kostenstelle 80 gefiltert und dann gedruckt, danach wird der Filter auf die Kostestelle 100 gesetzt und gedruckt usw.
Mit dem o.g Makro soll dieser Vorgang automatisiert werden.

Anzeige
AW: Ja, aber ...
13.10.2004 13:51:24
Rolf
Hallo B,
der Fehler des Makros liegt darin,
dass die Werte aus Spalte 4 als Filter in Spalte 1 gesetzt werden,
und dann die Druckvorschau erscheint.
Tatsächlich sollen es aber die Werte aus Spalte 10 sein.
Versuch's mal damit + gib Laut, ob's klappt.
Herzliche Grüße
Rolf

Sub FilternUndDrucken()
Dim arr()                                    'Datenfeld
Dim iRow As Integer                          'Zähler
Dim sp As Integer                            'tempor.Spalte
sp = 10                                      'Spalte 10 als Zwischenspeicher
'Spezialfilter setzen + Ausprägungen in Spalte "J" ausgeben
Range("A:A").AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Range("J1"), Unique:=True
iRow = 2                                     'iRow initialisieren
'alle Daten der Spalte 10 in Datenfeld speichern
Do Until IsEmpty(Cells(iRow, sp))
ReDim Preserve arr(iRow - 1)
arr(iRow - 1) = Cells(iRow, sp)
iRow = iRow + 1
Loop
Columns(sp).ClearContents                     'Inhalte der Spalte 10 löschen
'alle im Datenfeld gespeichtern Werte als Filter in Spalte 1 setzen
For iRow = 1 To UBound(arr)
Columns(1).AutoFilter Field:=1, Criteria1:=arr(iRow)
ActiveSheet.PrintPreview                  'Druckvorschau
Next iRow
Range("A1").AutoFilter                       'AutoFilter aus
End Sub

Anzeige
Suuuper
B
Danke Rolf,
Du bist der Beste !! Es funktioniert, wie geplant.
Schönen Tag noch.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige