Makro: Tabelle drucken, einen Wert uns 1 erhöhen, wieder drucken
Hallo,
ich muss immer wieder Auszüge aus umfangreichen Dateien für 44 Personen ausdrucken. Dieses realisiere ich bisher indem ich in Zelle B4, nacheinander die Zahlen 1 - 44 eingebe und auf drucken klicke. Das geht doch sicher mit einem kleinen Makro einfacher und schneller.
Vielen Dank im Voraus
mfg
Wolfgang H.
Antwort schreiben
Antwort 1 von Hajo_Zi vom 15.05.2020, 10:55 Options
Hallo Wolfgang,
hier mal ein Ansatz.
eine Seite 20x Drucken, Seite 1 von 20; 2 von 20 usw.
Sub DruckeUndZaehle()
Dim VarPrints As Variant, intI As Integer, intK As Integer
‚Inputbox mit Type 1 laesst nur Zahlen als Eingabe zu.
VarPrints = Application.InputBox("Anzahl der Ausdrucke", "Drucken", 0, Type:=1)
If VarPrints = False Then ‘User selected cancel
Exit Sub
ElseIf CInt(VarPrints) > 0 Then
intK = CInt(VarPrints)
For intI = 1 To intK Step 1
With ActiveSheet.PageSetup
.CenterFooter = "Seite " & intI & " von " & intK
End With
ActiveSheet.PrintPreview ‚zeigt die Vorschau an, ggf. deaktivieren.
‚ActiveSheet.PrintOut ‚druckt direkt wenn Zeile aktiviert.
Next intI
End If
End Sub
Gruß Hajo
Antwort 2 von woherh vom 15.05.2020, 11:36 Options
Hallo Hajo,
irgendwie bekomme ich es nie hin meine Fragen gleich beim ersten mal so zu stellen, das sie verstanden werden.
In dem Excel-Tabellenblatt werden je nach Eingabe einer Kennziffer von 1 bis 44 in B4 die Daten von 44 verschiedenen Personen angezeigt. (übrigens Dank der gestrigen Hilfe zur Funktion INDIREKT). Diese möchte ich nacheinander alle drucken. Zu Beginn steht also in B4 eine 1, dann möchte das Makro starten, der Druck startet, die Zahl wird um 1 erhöht, wieder drucken, diese Schleife wiederholt sich bis in B4 die 44 und gedruckt wurde.
Hoffentlich jetzt verständlich.
mfg
Wolfgang H.
PS: mir ist mein Supportnet Passwort abhanden gekommen, wie komme ich da wieder ran??
Antwort 3 von Hajo_Zi vom 15.05.2020, 11:39 Options
Hallo Wolfgang,
Du brauchst doch nutr den Teil
With ActiveSheet.PageSetup
.CenterFooter = "Seite " & intI & " von " & intK
End With
ersetzen durch Range("B4")= intI
Gruß Hajo
Antwort 4 von woherh vom 15.05.2020, 11:53 Options
Hallo Hajo,
ich kann zur Not mal mit dem Makrorecorder was aufzeichnen, verstehe aber nicht was welche Texte innerhalb des Makros bewirken.
Für mich stellt sich immer wieder die Frage: Wohin mit dem Makro?
Zur Tabelle?
Diese Arbeitsmappe?
Modul?
Ich habe eben alle 3 Varianten es ausprobiert werden, es färben in jedem Fall sofort diverse Zeilen rot.
mfg
Wolfgang H.
Antwort 5 von Hajo_Zi vom 15.05.2020, 12:16 Options
Hallo Wolfgang,
das Makro gehört in ein Modul und wird über das makromenü gestartet.
Option Explicit
Sub DruckeUndZaehle()
Dim VarPrints As Variant, intI As Integer, intK As Integer
VarPrints = Application.InputBox("Anzahl der Ausdrucke", "Drucken", 0, Type:=1)
If VarPrints = False Then 'User selected cancel
Exit Sub
ElseIf CInt(VarPrints) > 0 Then
intK = CInt(VarPrints)
For intI = 1 To intK Step 1
Range("B4") = intI
ActiveSheet.PrintOut 'druckt direkt wenn Zeile aktiviert.
Next intI
End If
End Sub
Gruß hajo
Antwort 6 von woherh vom 15.05.2020, 13:00 Options
Hallo Hajo,
jetzt funktionierts wie gewünscht. Doppelt danke, denn heute morgen habe ich über eine etwas ältere Antwort von dir, ein Marko von dir gefunden mit dem ich die Tabellenblätter dieser Datei sortiert habe. Dabei war es mir immerhin gelungen, das Makro so zu ändern, das es absteigend sortiert.
mfg
Wolfgang H.