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

Zeilen ausblenden für Druck

Zeilen ausblenden für Druck
Willi
Hallo Leute,
ich habe eine Mappe erstellt, mit der man Gutscheine Drucken kann. Auf jeder einzelnen Seite sind 2 Gutscheine. Über eine Maske auf einer Seite, soll man den jeweiligen Gutschein aufrufen können für die Druckvorschau /Druck. Wenn nun nur ein Gutschein der Seite gedruckt werden soll, weil im zweiten keine Daten stehen, so möchte ich per Makro die Zeilen des leeren Gutscheins ausblenden und somit nur den ausgefüllten drucken. Für das einfache Makro reichte mein Wissen noch, was muss ich aber einfügen, damit es wie gewünscht funktioniert? Eine Zelle um abzufragen, ob ein Gutschein mit Daten gefüllt ist oder nicht wäre zB L7.
Sub druck_Gutsch2()
' Druck_Gutsch2 Makro
Sheets("Gutschein2").Select
ActiveWindow.SelectedSheets.PrintPreview
Sheets("Berechnung").Select
End Sub
Gruß Willi

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
das würde ich anders machen...
12.10.2010 14:26:29
Björn
Hallo Willi,
setz doch einfach einen Druckbereich.
Du brauchst dazu nix ein und ausblenden.
Wie der Druckbereich gesetzt wird, kannst Du dir einfach mit Makrorekorder aufzeichnen.
Dann etwa so:

If Sheets("Gutschein2").Range("L7").Value  "" then
Set druckrange = Range(Cells(1, 1), Cells(1, 16))
else
Set druckrange = Range(Cells(1, 17), Cells(1, 32))
end if
ActiveSheet.PageSetup.PrintArea = druckrange.Address
Den Bereich musst du natürlich entsprechend anpassen.
Gruß
Björn B.
AW: das würde ich anders machen...
12.10.2010 14:53:52
Willi
Hallo Björn,
danke für deinen Tip, funktioniert! Das mit dem Druckbereich hätte mir auch einfallen können, allerdings arbeite ich zu wenig mit Excel. Aber trotzdem danke für deine Hilfe.
Gruß Willi
Anzeige
AW: Zeilen ausblenden für Druck
12.10.2010 14:29:51
Klaus
Hallo Willi,
eine Musterdatei währ toll gewesen, so bleibt die Antwort ungetestet:
Sub druck_Gutsch2()
With Sheets("Gutschein2")                        'With - Referenzierung statt select
.Range("L1:L14").EntireRow.Hidden = False    'alle Zeilen einblenden
If .Range("L7") = "" Then                    'Zelle L7 auf Leerheit überprüfen
.Range("L7:L14").EntireRow.Hidden = True 'Zeile 7-14 ausblenden
End If
.PrintPreview
End With
End Sub
ich gehe davon aus, der erste Gutschein geht von Zeile 1-6 und der zweite von Zeile 7-13. Wenns anders ist, eben die Bereiche im Makro anpassen.
Grüße,
Klaus M.vdT.
P.S.: verzichte immer auf .select und .activate
Anzeige
AW: Zeilen ausblenden für Druck
12.10.2010 14:51:49
Willi
Hallo Klaus,
vielen Dank für deine Tips und dein Makro. Genau das habe ich gesucht! Leider beschäftige ich mich zu selten mit Excel. Aber was mich interessiert, warum kein .select oder .activate nutzen?
Gruß Willi
warum auf select und activate verzichten
12.10.2010 14:55:54
Klaus
Hallo Wili,
um deine Frage kurz zu beantworten:
die Kommandos select und activate sind immer (ok ... fast immer) überflüssig und sorgen nur dafür, dass der Code unnötig langsam wird, der Bildschirm flackert und im Falle eines Fehlers das debugging unnötig erschwert wird.
Um deine Frage ausführlich zu beantworten, verweise ich auf den großartigen Artikel von Peter Haserodt, der selbst in diesem Forum aktiv ist:
http://www.online-excel.de/excel/singsel_vba.php?f=78
Grüße,
Klaus M.vdT.
Anzeige
AW: warum auf select und activate verzichten
12.10.2010 15:11:39
Willi
Hallo Klaus,
danke, jetzt habe ich verstanden. Ein user wie ich würde alleine nie darauf kommen, dass eine eigentlich einfache, im Programm integrierte Funktion, die vor allem häufig von weniger versierten Nutzern verwendet wird, eigentlich in den meisten Fällen Unfug ist. Ich denke ich muss mich noch viel mehr damit beschäftigen. :-)
Danke für deine Hilfe
kurz gesagt...
12.10.2010 15:00:57
Björn
weil es umständlich ist.
weil es unnötig ist.
weil es den Code aufbläht.
weil es Deine Prozedur extrem verlangsamt.
Lang gesagt, gibt es dazu ne Menge zu lesen, warum man das nicht tun sollte.
Ist eben ein Anfängerfehler, vor allem, weil der Makrorekorder das so aufzeichnet.
Fakt ist einfach, dass man die Zelle nicht anklicken muss (das wäre .Select), um was mit ihr zu machen.
Beispiel.
Statt
Range("A1").Select
Selection.Copy
Range("A2").Select
Selection.Paste
Kann man einfach schreiben:
Range("A1").Copy Range("A2")
Heißt also 3 Zeilen Code gespart und ist auch noch viel schneller, den Unterschied merkt man bei einer kopierten Zelle nicht wirklich, aber dafür braucht man auch kein Makro ;-)
Du sagst ja auch nicht:
"Nimm die Wurst in die Hand"
"Lege das, was Du in der Hand hast auf den Tisch"
Du sagst einfach " Leg die Wurst auf den Tisch".
Blödes Beispiel, ich weiß, aber vielleicht hilft es Dir ein bisschen.
Gruß
Björn B.
Anzeige
AW: kurz gesagt...
12.10.2010 15:25:31
Willi
Auch dir Danke, Björn. Wie schon gerade geschrieben, macht sich ein "normal" user, der hin und wieder mal eine Arbeitsmappe erstellt, selten Gedanken über Sinn und Unsinn einzelner Funktionen. Er geht davon aus, dass alles seinen Sinn hat und auch richtig angewendet wird. Leider kommt man auch selbst gar nicht darauf, gewisse Dinge zu hinterfragen. Gott sei Dank gibt es Leute wie euch, die wenigstens etwas Licht ins Dunkel bringen. Danke noch einmal
Gruß Willi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige