Discussion:
VBA Code um mehrere Blätter zu drucken
(zu alt für eine Antwort)
Dani Frei
2005-03-31 20:28:40 UTC
Permalink
Hallo NG

Ich habe ein Makro aufgezeichnet, welches ein Sheet Druck (Makro weiter
unten). Da die Datei aber über 5 Sheets verfügt, möchte ich eine Abfrage
machen, welche klärt ob in einem anderen Sheet eine bestimmte Zelle einen
Inhalt hat. Ist in dieser Zelle ein Inhalt, so muss das entsprechende Sheet
auch 4 mal ausgedruckt werden.
Beim aktiven Sheet muss der Range A1:F38 unbedingt 4 mal ausgedruckt werden.
Der Range A41:F49 muss nur einmal ausgedruckt werden.
Mein Wunsch ist nun beim Sheet2 die Zelle A12 auf einen Wert zu überprüfen.
Wenn diese Zelle einen Wert beinhaltet, so muss bei diesem Sheet der Range
A1:F38 ebenfalls 4 mal ausgedruckt werden.
Wie muss ich das Makro abändern, um meinen Wunsch zu realisieren?
Danke schon mal im Voraus für die Hilfe und

--
Liebe Grüsse aus der Schweiz

Dani



P.S. *** wer Schreibfehler findet darf sie gerne Behalten :-) ***



Sub Drucken ()
Range("A1:F38").Select
Range("F38").Activate
ActiveSheet.PageSetup.PrintArea = "$A$1:$F$38"
ActiveWindow.SelectedSheets.PrintOut Copies:=4, Collate:=True
ActiveWindow.SmallScroll Down:=33
Range("A41:F49").Select
Range("F49").Activate
ActiveSheet.PageSetup.PrintArea = "$A$41:$F$49"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Range("C3").Activate
End Sub
Markus Wagner
2005-04-01 05:49:01 UTC
Permalink
Hallo Dani,

es gibt zwar sicher noch schönere Wege, abver dieser hier funktioniert


Sub Drucken()

Dim i As Integer

Sheets(1).Select
'Drucken der Bereiche auf Sheet 1
ActiveSheet.PageSetup.PrintArea = "$A$1:$F$38"
ActiveWindow.SelectedSheets.PrintOut Copies:=4, Collate:=True
ActiveSheet.PageSetup.PrintArea = "$A$41:$F$49"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

'Die Sheets 2 bis 5 via Schleife durchlaufen
For i = 2 To 5
Sheets(i).Select

'Wert Überprüfen und Drucken wenn Wert OK
If ActiveSheet.Range("A12").Value = "DeinWert" Then
ActiveSheet.PageSetup.PrintArea = "$A$1:$F$38"
ActiveWindow.SelectedSheets.PrintOut Copies:=4, Collate:=True
End If

Next i

End Sub


"DeinWert" musst du noch ersetzen durch den Wert den Du pr+fen willst. Setze
diesen In Anführungszeichen wenn es sich um Text handelt. Wenn es eine Zahl
ist lass die Anführungszeichen weg.


Liebe Grüße
Markus
Post by Dani Frei
Hallo NG
Ich habe ein Makro aufgezeichnet, welches ein Sheet Druck (Makro weiter
unten). Da die Datei aber über 5 Sheets verfügt, möchte ich eine Abfrage
machen, welche klärt ob in einem anderen Sheet eine bestimmte Zelle einen
Inhalt hat. Ist in dieser Zelle ein Inhalt, so muss das entsprechende Sheet
auch 4 mal ausgedruckt werden.
Beim aktiven Sheet muss der Range A1:F38 unbedingt 4 mal ausgedruckt werden.
Der Range A41:F49 muss nur einmal ausgedruckt werden.
Mein Wunsch ist nun beim Sheet2 die Zelle A12 auf einen Wert zu überprüfen.
Wenn diese Zelle einen Wert beinhaltet, so muss bei diesem Sheet der Range
A1:F38 ebenfalls 4 mal ausgedruckt werden.
Wie muss ich das Makro abändern, um meinen Wunsch zu realisieren?
Danke schon mal im Voraus für die Hilfe und
--
Liebe Grüsse aus der Schweiz
Dani
P.S. *** wer Schreibfehler findet darf sie gerne Behalten :-) ***
Sub Drucken ()
Range("A1:F38").Select
Range("F38").Activate
ActiveSheet.PageSetup.PrintArea = "$A$1:$F$38"
ActiveWindow.SelectedSheets.PrintOut Copies:=4, Collate:=True
ActiveWindow.SmallScroll Down:=33
Range("A41:F49").Select
Range("F49").Activate
ActiveSheet.PageSetup.PrintArea = "$A$41:$F$49"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Range("C3").Activate
End Sub
Melanie Breden
2005-04-01 06:52:31 UTC
Permalink
Hallo Markus, Hallo Dani,
Post by Markus Wagner
es gibt zwar sicher noch schönere Wege, abver dieser hier funktioniert
ein viel schönerer Weg wäre ohne das Selektieren der Blätter:

Public Sub Drucken()
Dim i As Integer

With Worksheets(1)
.PageSetup.PrintArea = "$A$1:$F$38"
PrintOut Copies:=4, Collate:=True
.PageSetup.PrintArea = "$A$41:$F$49"
.PrintOut Copies:=1, Collate:=True
End With

For i = 2 To 5
With Worksheets(i)
If .Range("A12").Value = "DeinWert" Then
.PageSetup.PrintArea = "$A$1:$F$38"
.PrintOut Copies:=4, Collate:=True
End If
End With
Next i
End Sub
--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Loading...