Datenschutzerklärung


Direktnachricht



Ihre Software
Details
Excel/VBA 🔍
Add-Ins
Excel/VBA

Excel-Beispiele:
Erklärungen, Formeln, VBA-Code und mehr

Hinweise zu den Beispielen finden Sie hier: Beispiele


Angaben in Kopf-/Fußzeile (z. B. Zellbezug, Pfad)Makro/Sub/Prozedur

Kategorie: Drucken/Seite

(Tipp 122) Nachricht zum Beitrag an Autor Nach oben

Habe ich eine Möglichkeit, z. B. einen Zellbezug oder andere Angaben in die Kopf-/Fußzeile einzugeben?

Der Inhalt von A1 wird in die Fußzeile eingetragen:

ActiveSheet.PageSetup.LeftFooter = Range("A1")

Pfad und Dateiname werden eingetragen:

ActiveSheet.PageSetup.LeftFooter = ActiveWorkbook.path & "\" & ActiveWorkbook.Name

Arbeitsmappen eines Ordners druckenMakro/Sub/Prozedur

Kategorien: Dateien und Ordner ▸ Dateioperation und Drucken/Seite

(Tipp 20) Nachricht zum Beitrag an Autor Nach oben

Wie kann ich mit VBA alle Arbeitsmappen eines Ordners ausdrucken lassen?

Der Code nimmt sich die erste Exceldatei, die im Ordner in der Variablen ist. Die ruft er auf, druckt deren erstes Blatt und schließt sie wieder. Mit Dir() wird nun die nächste Datei genommen und die gleiche Prozedur erneut ausgeführt - so lange, bis mit Dir() keine weitere Datei gefunden wird.

Sub AlleDrucken() Dim WB As Workbook Dim strFName As String strFName = Dir("C:\Excel\*.xls") While strFName <> "" Set WB = Workbooks.Open(Filename:=strFName) WB.PrintOut WB.Close strFName = Dir() Wend End Sub

Der Code funktioniert zwar, wie er hier angegeben ist. Allerdings ist die Gefahr eines Fehlers groß, wenn bereits Dateien geöffnet sind. Zumindest die Prüfung darauf sollte noch mit eingebaut werden.

Im Zusammenhang damit muss auch beachtet werden, ob eine offene Datei gespeichert ist. Wenn nicht, kommt es beim Schließen zur entsprechenden „Speichern?“-Frage durch Excel und der Code wird angehalten.

Auf einer Tabelle jede Seite beim Druck beeinflussen (Seitenumbrüche)Makro/Sub/Prozedur

Kategorie: Drucken/Seite

(Tipp 161) Nachricht zum Beitrag an Autor Nach oben

Wie kann man beim Drucken jede Seite beeinflussen?

Hier ist eine flexible Version, die es ermöglicht, beim Druck jede Seite einer Tabelle zu beeinflussen. Einzig und allein die Zelle muß immer die gleiche sein, d. h. z. B., die achte von oben und siebte von links. Mit diesem Code ließen sich dann auch die Fragen beantworten, wie man einen Übertrag auf die nächste Seite bringt.

Sub Druckseiteneinrichten() Dim intI As Integer, intJ As Integer, intK As Integer Dim intSeitenZaehler As Integer Dim intWievielteZeile As Integer, intWievielteSpalte As Integer ReDim arrSammler(1) 'Standardmäßig wird bei jeder Seite der Inhalt der linken oberen Zelle 'zurückgegeben. Soll das eine andere sein, müssen die folgenden Werte 'geändert werden. 'Soll z. B. auf der ersten Seite der Inhalt von B4 zurückgegeben werden, 'muß die erste Variable auf 3, die zweite auf 1 gesetzt werden '(vierte Zeile von oben, zweite Spalte von links). intWievielteZeile = 0 intWievielteSpalte = 0 ActiveWindow.View = xlPageBreakPreview ActiveSheet.ResetAllPageBreaks arrSammler(0) = 1 For intI = 1 To ActiveSheet.HPageBreaks.Count ReDim Preserve arrSammler(intI) arrSammler(intI) = ActiveSheet.HPageBreaks.Item(intI).Location.Row Next intSeitenZaehler = 0 For intJ = 0 To intI - 1 intSeitenZaehler = intSeitenZaehler + 1 Ausfuehren CInt(arrSammler(intJ)) + intWievielteZeile, _ 1 + intWievielteSpalte, _ intSeitenZaehler Next For intJ = 1 To ActiveSheet.VPageBreaks.Count intSeitenZaehler = intSeitenZaehler + 1 Ausfuehren CInt(arrSammler(0)) + intWievielteZeile, _ ActiveSheet.VPageBreaks.Item(intJ).Location.Column + intWievielteSpalte, _ intSeitenZaehler For intK = 1 To intI - 1 intSeitenZaehler = intSeitenZaehler + 1 Ausfuehren CInt(arrSammler(intK)) + intWievielteZeile, _ ActiveSheet.VPageBreaks.Item(intJ).Location.Column + intWievielteSpalte, _ intSeitenZaehler Next Next ActiveWindow.View = xlNormalView End Sub Sub Ausfuehren(Zeile As Integer, Spalte As Integer, SeitenZaehler As Integer) Dim strAnzeige$ strAnzeige = Cells(Zeile, Spalte) & " Seite: " & SeitenZaehler MsgBox strAnzeige ActiveSheet.PageSetup.LeftHeader = strAnzeige ActiveSheet.PrintOut from:=SeitenZaehler, To:=SeitenZaehler End Sub

Druckbereich festlegen und druckenMakro/Sub/Prozedur

Kategorie: Drucken/Seite

(Tipp 557) Nachricht zum Beitrag an Autor Nach oben

Wie kann man per VBA den Druckbereich festlegen und das Blatt drucken?

With Sheets("Tabelle1") 'Druckbereich festlegen: .PageSetup.PrintArea = "$A$1:$B$10" 'Drucken: .PrintOut 'Druckbereich aufheben: .PageSetup.PrintArea = "" End With

Drucken: Leere Zeilen ausblendenMakro/Sub/Prozedur

Kategorie: Drucken/Seite

(Tipp 162) Nachricht zum Beitrag an Autor Nach oben

Wie kann man vor dem Druck leere Zeilen ausblenden und Druckbereich festlegen?

Der Druckbereich wird von der Zelle A10 bis zur Spalte E festgelegt. Die letzte Zeile des Druckbereichs ist hierbei die letzte Zeile, in der in Spalte A ein Eintrag vorhanden ist.

Sub druck() Dim intS As Integer, lngE As Long, lngZ As Long 'Spalte A: intS = 1 'Letzte Zeile mit Eintrag suchen: lngE = Cells(Rows.Count, intS).End(xlUp).Row 'Zeilen ausblenden: For lngZ = 10 To lngE If Cells(lngZ, 5) = "" Then Rows(lngZ).EntireRow.Hidden = True Next 'Druckbereich festlegen: ActiveSheet.PageSetup.PrintArea = "$A$10:$E$" & lngE 'Drucken: ActiveSheet.PrintOut 'Druckbereich aufheben: ActiveSheet.PageSetup.PrintArea = "" 'Zeilen einblenden: Rows.Hidden = False End Sub

Oder:

Sub ausblenden() Dim intI As Long, lngE As Long, lngL As Long, intS As Integer 'e = Erste Zeile mit Formel 'l = Zeile, in der Summe steht 's = Spalte, in der die Zellen auf "" überprüft werden sollen lngE = 1 lngL = 20 intS = 3 'Leere Zeilen ausblenden For intI = lngE To lngL If Cells(intI, intS).Text = "" Then Rows(intI).EntireRow.Hidden = True Next 'Drucken ActiveWindow.SelectedSheets.PrintOut Copies:=1 'Zeilen einblenden For intI = lngE To lngL Rows(intI).EntireRow.Hidden = False Next End Sub

Formeln druckenFormellösungTipp

Kategorien: Drucken/Seite und Tabelle ▸ Formeln

(Tipp 182) Nachricht zum Beitrag an Autor Nach oben

Wie kann ich anstelle der Ergebnisse die Formeln drucken?

Sollen alle Formeln des Blattes gedruckt werden:

  • Optionen
  • Erweitert
  • Optionen für dieses Arbeitsblatt anzeigen
  • Anstelle der berechneten Werte Formeln in Zellen anzeigen

Alternativ geht es auch mit der Tastenkombination Strg und ` (Graviszeichen, Taste rechts neben ß mit Umschalttaste drücken).

Sollen nur ausgewählte Formeln gedruckt werden, kann man als erstes in die Zelle ein Hochkomma (') eingeben, dann wird der Inhalt der Zelle als Text behandelt. Das empfiehlt sich übrigens auch dann, wenn eine längere Formel nicht beendet ist, aber die Mappe geschlossen werden soll.

Ab Excel 365

Sollen die Formeln zusätzlich zu den Ergebnissen gedruckt werden, können die mit der Funktion FORMELTEXT() angezeigt werden:

=FORMELTEXT(A1)



Seiteneinstellungen mehrerer Blätter ändernTipp

Kategorie: Drucken/Seite

(Tipp 235) Nachricht zum Beitrag an Autor Nach oben

Wie kann man die Seiteneinstellungen (Ränder, Kopfzeile, usw.) mehrerer Blätter auf einmal ändern?

Sollen alle Blätter der Mappe betroffen sein, ein Register mit rechts anklicken und Alle Blätter markieren wählen. Sonst die einzelnen Blattregister mit gedrückter Shift-Taste anklicken.

Anschließend die Seiteneinstellungen vornehmen und ein beliebiges Register eines nicht aktiven Blattes anklicken.

Seitenzahl feststellenMakro/Sub/Prozedur

Kategorie: Drucken/Seite

(Tipp 163) Nachricht zum Beitrag an Autor Nach oben

Wie kann ich per Makro die Anzahl der Seiten eines Blattes feststellen?

Seitenanzahl = (Worksheets(1).HPageBreaks.Count + 1) * (Worksheets(1).VPageBreaks.Count + 1)

Werte einiger Zellen nicht druckenMakro/Sub/Prozedur

Kategorien: Drucken/Seite und Format ▸ Farben

(Tipp 559) Nachricht zum Beitrag an Autor Nach oben

Wie kann ich erreichen, dass die Werte bestimmter Zellen nicht gedruckt werden?

Indem man einfach die Schriftfarbe auf die Hintergrundfarbe setzt. Diese Routine setzt die Schriftfarbe der festgelegten Zellen auf die Hintergrundfarbe, druckt und setzt die Schriftfarbe wieder zurück:

Sub Drucken() Dim arrZellen(), arrSammler(), intI As Integer 'Hier die Zellen eintragen, deren Inhalte nicht gedruckt werden sollen: arrZellen = Array("B5", "C10", "C15", "D20", "E4", "E6", "E12") ReDim Preserve arrSammler(2, UBound(arrZellen)) For intI = 0 To UBound(arrZellen) arrSammler(0, intI) = arrZellen(intI) arrSammler(1, intI) = Range(arrZellen(intI)).Font.Color arrSammler(2, intI) = IIf(Range(arrZellen(intI)).Interior.ColorIndex = -4142, -4142, Range(arrZellen(intI)).Interior.Color) Range(arrZellen(intI)).Font.Color = Range(arrZellen(intI)).Interior.Color Next ActiveSheet.PrintOut For intI = 0 To UBound(arrZellen) Range(arrSammler(0, intI)).Font.Color = arrSammler(1, intI) If arrSammler(2, intI) = -4142 Then Range(arrSammler(0, intI)).Interior.ColorIndex = -4142 Else Range(arrSammler(0, intI)).Interior.Color = arrSammler(2, intI) End If Next End Sub