Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1728to1732
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

bestimmte Spalten über mehrere Sheets ausdrucken

bestimmte Spalten über mehrere Sheets ausdrucken
23.12.2019 16:27:29
Peer
Hallo.
Ich habe ein Makro aus dem Web, das ich an meine Bedürfnisse gern anpassen möchte.
Dazu habe ich folgendes vor:
Das Makro, das bei mir in einem allgemeinen Modul ist, soll die Spalten B12:E42 und T12:U42 auf ein A4 Blatt drucken, wobei leere Zeilen nicht enthalten sein dürfen. Dabei soll das Makro nur die Sheets 1 (Januar) bis 12 (Dezember) einbeziehen.
Derzeit ist das Makro noch auf das Activesheet ausgelegt.
Sub DruckZeilen()
Dim wks As Worksheet, Zeile As Long
Set wks = ActiveSheet 'oder = Worksheets("TabellenName")
With wks
Application.ScreenUpdating = False
'Alle Zeilen im Blatt einblenden
.Rows.Hidden = False
With .PageSetup
.FitToPagesTall = False
.FitToPagesWide = 1
.Zoom = False
End With
'Ab Zeile 12 prüfen, ob in Spalten B bis U Zeileninhalte vorhanden
For Zeile = 12 To .Cells.SpecialCells(xlCellTypeLastCell).Row
If Application.WorksheetFunction.CountA(.Range(.Cells(Zeile, 2), _
.Cells(Zeile, 21))) = 0 Then
'ggf. zeile ausblenden
.Rows(Zeile).Hidden = True
End If
Next
Application.ScreenUpdating = True
'Drucken
'.PrintOut 'Drucken auf aktiven Drucker
.PrintPreview   'Seitenvorschau
'Alle Zeilen wieder einblenden
.Rows.Hidden = False
End With
End Sub

Ich glaube, ich müsste die dazwischen liegenden Spalten ausblenden. Und das auch über alle 12 Sheets.
Wie stelle ich das an?
LG
Peer

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: bestimmte Spalten über mehrere Sheets ausdrucken
23.12.2019 16:48:02
Werner
Hallo,
so:
Sub DruckZeilen()
Dim Zeile As Long, i As Long
Application.ScreenUpdating = False
For i = 1 To 12
With Worksheets(i)
'Alle Zeilen im Blatt einblenden
.Rows.Hidden = False
.Columns.Hidden = False
With .PageSetup
.FitToPagesTall = False
.FitToPagesWide = 1
.Zoom = False
End With
'Ab Zeile 12 prüfen, ob in Spalten B bis U Zeileninhalte vorhanden
For Zeile = 12 To .Cells.SpecialCells(xlCellTypeLastCell).Row
If Application.WorksheetFunction.CountA(.Range(.Cells(Zeile, 2), _
.Cells(Zeile, 21))) = 0 Then
'ggf. zeile ausblenden
.Rows(Zeile).Hidden = True
End If
Next Zeile
.Columns("F:S").Hidden = True
'Drucken
'.PrintOut 'Drucken auf aktiven Drucker
.PrintPreview   'Seitenvorschau
'Alle Zeilen wieder einblenden
.Rows.Hidden = False
.Columns.Hidden = False
End With
Next i
End Sub
Gruß Werner
Anzeige
AW: bestimmte Spalten über mehrere Sheets ausdrucken
23.12.2019 17:35:51
Peer
Hallo Werner.
Danke für deine schnelle Antwort.
Leider bleibt der Debugger nach dem Schließen der PrintPreview hängen mit dem Laufzeitfehler 1004. Auch werden die Spalten T und U nicht geladen.
Außerdem ist die Spalte A von Haus aus augeblendet. Sie wird aber wieder nach dem Durchlauf des Makros eingeblendet und bleibt so. Das wäre schön, wenn nach dem Makro alles wieder seinen Ursprung hat.
Ich lege die Beispiel-Datei bei, dann kannst du es eventuell selber nachvollziehen.
https://www.herber.de/bbs/user/133940.xlsm
Vielen Dank, Werner, wenn du mal drüber schaust.
LG
Peer
Anzeige
AW: bestimmte Spalten über mehrere Sheets ausdrucken
23.12.2019 19:13:26
Werner
Hallo,
das kommt davon, wenn einem Infos vorenthalten werden.
1. hast du einen Blattschutz auf den Blättern
2. kann ich nicht erraten, dass Spalte A bereits ausgeblendet ist und das auch bleiben soll
3. hatte ich auch keine Ahnung, dass nach Spalte U weitere Spalten sind
4. in deiner Beispielmappe sind nur die Blätter Januar und Februar
Zu 3.
Was ist mit den Spalten V bis AK? Sollen die mit ausgedruckt werden oder müssen die auch ausgeblendet werden?
Zu 4.
Sind immer alle Monatsblätter von Januar bis Dezember vorhanden und sollen auch immer alle Monatsblätter ausgedruckt werden?
Gruß Werner
Anzeige
AW: bestimmte Spalten über mehrere Sheets ausdrucken
23.12.2019 19:35:27
Peer
Hi Werner.
Entschuldige, dass ich vieles vergessen habe.
So bald man etwas scheinbar simples ausprobiert und einem dabei geholfen wird, erfährt man erst beim Ausprobieren, was man alles noch berücksichtigen muss.
zu 1:
Der Blattschutz ist erstens wegen den Sprüngen bei der Eingabe drin, und zweites soll der die Formeln schützen. Die Mappe ist nicht nur für mich gedacht. Beim Rechtsklick im Range B12:C42 öffnet sich über einen Befehl eine UF. (falls du neugierig bist ;-)
zu 2:
Spalte A hatte ich schon vergessen, dass es sie noch gibt. Ich kann die auch nicht mehr sagen, warum ich sie ausgeblendet habe. Das Projekt dazu ist inzwischen mit den Jahren sehr groß geworden. In jedem Fall soll sie weiterhin ausgeblendet sein.
zu 3:
Es sollen nur die Spalten B:E und die Spalten T:U ausgedruckt werden, da ich nur diese Daten für die Arbeitszeit-Zusammenfassung brauche. Dies wurde von anderen Mitarbeitern für das Finanzamt gewünscht.
zu 4:
im Prinzip bleiben alle Blätter für die Monate ersichtlich. Einige Blätter mit den Parameterangaben und weiteren "Zwischendaten" werden bei Start ausgeblendet, damit der Mitarbeiter nicht damit überflutet wird. Und er soll auch daran nichts ändern können. Deshalb sind die einiger der anderen Blätter beim fertigen Projekt ausgeblendet.
LG
Peer
Anzeige
AW: bestimmte Spalten über mehrere Sheets ausdrucken
23.12.2019 20:10:57
Werner
Hallo,
Option Explicit
Sub DruckZeilenNeu()
Dim Zeile As Long, i As Long
Application.ScreenUpdating = False
For i = 1 To 12
With Worksheets(i)
.Unprotect
'Alle Zeilen im Blatt einblenden
.Range("A1:A100").EntireRow.Hidden = False
.Columns("B:AK").Hidden = False
With .PageSetup
.FitToPagesTall = False
.FitToPagesWide = 1
.Zoom = False
End With
'Ab Zeile 12 prüfen, ob in Spalten T bis U Zeileninhalte vorhanden
For Zeile = 12 To .Cells.SpecialCells(xlCellTypeLastCell).Row
If Application.WorksheetFunction.CountA(.Range(.Cells(Zeile, 20), _
.Cells(Zeile, 21))) = 0 Then
'ggf. zeile ausblenden
.Rows(Zeile).Hidden = True
End If
Next Zeile
.Range("F:S,V:AK").EntireColumn.Hidden = True
'Drucken
'.PrintOut 'Drucken auf aktiven Drucker
.Range("B12:U42").PrintPreview   'Seitenvorschau
'Alle Zeilen wieder einblenden
.Range("A1:A100").EntireRow.Hidden = False
.Range("F:S,V:AK").EntireColumn.Hidden = False
.Protect
End With
Next i
End Sub
Gruß Werner
Anzeige
AW: bestimmte Spalten über mehrere Sheets ausdrucken
23.12.2019 20:35:54
Peer
Vielen Dank, Werner.
Es funktioniert Super.
Dazu hätte ich noch eine kleine Frage, dessen Lösung ich im Netz nicht finden konnte.
Wie kann ich eine gesetzte Fuss/Kopf-Zeile so ändern, dass die geänderte Zeile speziell nur für diesen Ausdruck zählt?
LG
Peer
AW: bestimmte Spalten über mehrere Sheets ausdrucken
24.12.2019 09:08:42
Werner
Hallo,
ich denke nicht, dass das "nur für diesen Ausdruck" geht.
Du wirst wohl deine vorhandene Kopf-/Fußzeile im Makro für den Ausdruck ändern müssen. Nach dem Ausdruck dann wieder "zurückändern" auf die ursprüngliche Kopf-/Fußzeile.
Mach das einmal "händisch" und lass den Rekorder mitlaufen.
Gruß Werner
Anzeige
AW: bestimmte Spalten über mehrere Sheets ausdrucken
24.12.2019 09:47:34
Peer
Hallo.
Ok, werde das wohl so machen müssen.
Danke für deine Hilfe.
Frohe Weihnachten und schöne Feiertage.
LG
Peer
Gerne...
24.12.2019 10:54:03
Werner
Hallo,
...und dir auch besinnliche Weihnachten und einen guten Rutsch nach 2020.
Gruß Werner

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige