Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
436to440
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
436to440
436to440
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Drucken

Drucken
07.06.2004 14:25:49
Andi
Hallo,
ich möchte, dass der Druckbereich alle beschriebenen Zeilen umfasst. Drückt man jetzt den Druckbutton, dann druckt er alle 12 eingegebenen Aufgaben aus.
Wie sieht der Printbefehl dazu aus!
Freu mich über jeden Vorschlag
MFG Andi

26
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Drucken
07.06.2004 14:51:53
Andi_H
Hi Andi,
ich hab hier zwar irgendwie Probleme deine Anfrage zu verstehen (12 eingegebene Aufgaben, wie sieht das aus, mehrere Tabellenblätter?, wo stehen die daten, aufbau...)
Hier mal ein Makro welches den Druckbereich des benutzen Bereiches einer Tabelle definiert: Kopier diesen Code mal im VBA-Editor in "DieseArbeitsmappe"

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim i, x, lRow, lCol As Long
lRow = 0
For i = 1 To 256 Step 1
If IsEmpty(Cells(65536, i)) Then
If Cells(65536, i).End(xlUp).Row > lRow Then _
lRow = Cells(65536, i).End(xlUp).Row
Else
lRow = 65536
Exit For
End If
Next
For x = 256 To 1 Step -1
If IsEmpty(Cells(65536, x)) Then
If Cells(65536, x).End(xlUp).Row <> 1 Then
lCol = x
Exit For
End If
Else
lCol = x
Exit For
End If
Next
ActiveSheet.PageSetup.PrintArea = "$A$1:" & Cells(lRow, lCol).Address
End Sub


Gruß
Andi
Anzeige
AW: Drucken
07.06.2004 15:11:59
Andi
Hey Andi,
Danke erstmal für den Code. Ich versuch es mal besser zu erklären. Ich habe mehrere Tabellenblätter, die verschiedenen Personen zugeordnet sind. Wenn eine Person seine eingegebenen Aufgaben ausdrucken möchte, dann soll er nicht mehrere Seiten aus dem Tabellenblatt kopieren, sondern nur den Bereich, in dem er seine Aufgaben eingegeben hat(geht über 10 Spalten: Name Aufgabe Datum etc)
Andi Telefonieren 21.05.04
So besser? Hoffe, dein Code klappt dafür, ich probier es mal aus. Hast du vielleicht noch ne Idee? Vielen Dank
MFG Andreas
Anzeige
AW: Drucken
07.06.2004 15:22:42
Andi_H
Also der Code macht folgendes:
gibt jemand einen Druckbefehl wird im aktiven Tabellenblatt der Druckbereich definiert und dann gedruckt. Reicht das schon oder soll sonst noch was rein?
Ich denke schon, Vielen Dank ;-) (o.T.)
07.06.2004 15:45:40
Andi
;-)
AW: Drucken
07.06.2004 15:59:25
Andi
Hey Andi,
hab es gerade mal ausprobiert. Leider hat mein Drucker nichts gedruckt. Die Seitenränder waren nicht korrekt, hab ich in der Seitenumbruchvorschau von Hand geändert!Also ich habe die Seite auf Querformat eingerichtet und den Druckerbereich erweitert, so dass die ganze Tabelle auf eine DINA4-Seite passt. Woran könnte es liegen, dass der Drucker nicht druckt?
MFG Andreas
AW: Drucken
07.06.2004 16:13:42
Andi_H
Hast du das ganze auch ins BeforePrint - Ereignis der Arbeitsmappe rein??
Kann sein das du das BeforePrint bei den beiden Comboboxen in DieseArbeitsmappe nochmal einstellen und dann den Code reinkopieren mußt.
Hier mal eine Beispielmappe:
https://www.herber.de/bbs/user/7167.xls
Anzeige
AW: Drucken
07.06.2004 16:18:28
Andi
habe jetzt Workbook BeforePrint
und hier dann den Code hineinkopiert. Aber wie verknüpfe ich das jetzt mit meinem Druckerbutton in einem der Tabellenblätter ?
AW: Drucken
07.06.2004 20:33:13
Andi_H
ach du hast buttons in den Tabellenblättern
schreibe in die Buttons den Code :
activesheet.printout
das startet den druckbefehl und vor jedem drucken wird der druckbereich angepasst
AW: Drucken
08.06.2004 10:00:34
Andi
Hey Zusammen,
habe den Code vom Andi ausprobiert. Ich habe eine Button im meinem Tabellenblatt, der den Druckbefehl ActiveSheet.Printout aktiviert. Der Code vom Andi H soll den Druckbereich festlegen, also nur der Bereich der Tabelle (umfasst 100 Zeilen, soll nicht komplett ausgedruckt werden) in dem Daten eingegeben sind, soll ausgedruckt werden. (Also z.B. 10 Aufgaben, die in der Tabelle eingetragen sind). Der Code hat auch funktioniert, nur irgendwas habe ich verbockt. Ich habe nichts geändert am Code von Andi H, ich habe ein Makro aufgenommen in dem das Druckensymbol gedrückt wird und dann hinein kopiert in den Private Sub Bereich Drucken. Problem ist, er druckt jetzt das ganze Tabellenblatt bzw. auch noch andere Tabellenblätter. Habt ihr einen Rat???
Vielen dank
Code Andi H

Dim i, x, lRow, lCol As Long
lRow = 0
For i = 1 To 256 Step 1
If IsEmpty(Cells(65536, i)) Then
If Cells(65536, i).End(xlUp).Row > lRow Then _
lRow = Cells(65536, i).End(xlUp).Row
Else
lRow = 65536
Exit For
End If
Next
For x = 256 To 1 Step -1
If IsEmpty(Cells(65536, x)) Then
If Cells(65536, x).End(xlUp).Row <> 1 Then
lCol = x
Exit For
End If
Else
lCol = x
Exit For
End If
Next
ActiveSheet.PageSetup.PrintArea = "$A$1:" & Cells(lRow, lCol).Address
Anzeige
AW: Drucken
08.06.2004 10:14:51
Andi
Hey,
nochmal zu oben, wenn ich mit der Maus das Druckersymbol anklicke, dann ist der Druckbereich richtig und er druckt nur die beschriebenen Zeilen aus! Genauso soll der Code von Andi H ja auch funktionieren. Wenn ich diesen Vorgang als MAkro aufzeichne und dann in Bereich des Druckerbuttons des Tabellenblattes kopiere, dann macht er das nicht mehr, dann druckt er die ganze TAbelle! Woran könnte das liegen? Gibt es dafür eine einfach Lösung?
MFG Andi
AW: Drucken
08.06.2004 10:42:54
Andi_H
Hört sich seltsam an, steht das Makro zur Druckbereichfestlegung im BeforePrint ereignis, so wird dieser Code immer angesteuert wenn der Befehl zum drucken gegeben wird, egal wie.
lade doch die Datei mal hoch.
Anzeige
AW: Drucken
08.06.2004 13:31:55
Andi
Hey,
ich lade die Datei mal hoch vielleicht findest du den Fehler ja?

Die Datei https://www.herber.de/bbs/user/7213.xls wurde aus Datenschutzgründen gelöscht

Vielen Dank im Voraus!
MFG Andi
Nachfrage
08.06.2004 14:22:55
Andi_H
wie wird denn der Druckbefehl gegeben??
einfach über datei drucken bzw symbol oder per Code?
Ich kann nämlich hier keinen Fehler finden.
ich hab mir als erste Codezeile im BeforePrint eine msgbox gesetzt. So kannst du kontrollieren ob dieser Code auch bei jedem Druckbefehl angesteuert wird und dies trifft bei mir zu.
Welche Seiten werden vom Benutzer gedruckt??
AW: Nachfrage
08.06.2004 15:20:11
Andi
Der Druckbefehl wird über einem Button im Tabellenblatt UG zum Beispiel gegeben. Dieser führt den Code ActiveSheet.Printout aus bzw. das aufgezeichnete MAkro (Drücken des Druckersymbols). Beides funktioniert nicht. Erst wenn ich von Hand in der Seitenumbruchvorschau war, dann funktioniert es! Vom Benutzer werden die Tabellenblätter mit 2 Buchstaben benutzt, diese sollen eventuell auch ausgedruckt werden! Später möchte ich vielleicht auch noch die anderen Tabellenblätter ausdrucken lasssen können, je nach User wunsch. Weiß aber nicht wie ich die Auswahl machen soll!
Vielen Dank schon mal für deine Mühe, ich probier es gleich nochmal aus? Mach es von vorn, vielleicht hab ich ja was verstellt
Anzeige
AW: Nachfrage
08.06.2004 15:47:04
Andi
Also, ich habe jetzt im UG-Sheet ein Commandbutton gemacht, Befehl activesheet.printout eingefügt und ausprobiert. Vorher habe ich den Button aktualisieren in verschiedenen Tabellenblättern benutzt, so dass ein veränderter z udruckende Bereich entsteht. Leider druckt er nur den alten Bereich! Es funktioniert also leider so nicht. Drücke ich aber das Druckersymbol in der Symbolleiste ohne Commandbutton oder so, dann nimmt er den richtigen Druckerbereich! Komisch, es sieht fast so aus, als würde der Workbook Beforeprint, dass Beforeprint nicht bemerken! Woran das aber liegen könnte weiß ich leider nicht. Ich hoffe du kannst mir da weiterhelfen! Du hattest das mit der Messagebox aber jetzt nicht hochgeladen oder? Habe jetzt nur das alte, was ich hochgeladen habe!
MFG Andreas und vielen Dank
Anzeige
AW: Nachfrage
08.06.2004 16:56:20
Andi_H
also warum er den Druckbereich nicht definiert wenn man den Code aus einem CommandButton startet weiß ich nicht, ich habe jetzt eine alternativlösung (siehe Anhang)
ich habe statt dem Button aus der Steuerelement - Toolbox einen aus den formularen genommen. Hier kann man Makros zuweisen. Schau dir mal das Beispiel an, müßte genau das machen was du wolltest. (Änderungen: BeforePrint, Druckmakro in Modul 3, Button in UG)
https://www.herber.de/bbs/user/7228.xls
Kleine Anmerkung am Rande:
Du verwendest sehr oft select, kannst du weglassen:
mit select:
Sheets("UG").Select
Sheets("UG").Range("A5:J103").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A2").Select

Cells(65536, 1).End(xlUp).Offset(1, 0).Select
das gleiche ohne:
Sheets("UG").Range("A5:J103").Sort Key1:=Sheets("UG").Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Schreib mal im Workbook_Open als erste Codezeile application.screenupdating = false
und als letzte Zeile application.ScreenUpdating = true
das schaltet die Bildaktualisierung aus bis sie wieder aktiviert wird, dann brauchst du deinem Code nicht beim abreiten zuschauen und augenschonender ist es auch.
auch bei den Activate Ereignissen
Dann ist mir noch aufgefallen das du die Eigenschaft TakeFocusOnClick deiner Commandbuttons nicht auf false gesetzt hast, kann bei kopieren, einfügen von zeilen oder zellen zu nem Laufzeitfehler führen wenn der Focus noch auf dem Button ist.
So und nun noch viel spaß beim weiterbasteln,
gruß
Andi
Anzeige
Danke schön für díe Tipps, Sind gut!!!
09.06.2004 08:26:00
Andi
;-)
AW: Danke schön für díe Tipps, Sind gut!!!
09.06.2004 10:04:57
Andi
Kannst du mir erklären wie du den Button aus den Formularen gemacht hast und dann in die Excel-Datei kopiert hast? Das wäre super!
MFG Andreas
AW: Danke schön für díe Tipps, Sind gut!!!
09.06.2004 10:55:50
Andi_H
Im Menü: Ansicht-Symbolleisten und dann die symbolleiste formular aktivieren.
Schaltfläche auswählen und es kommt schon die frage welches makro dem button zugeordnet werden soll (geht auch mit Rechtsklick aufm Button)
Es geht übrigens auch mit den Objekten aus der Symbolleiste zeichnen.
gruß
andi
AW: Danke schön für díe Tipps, Sind gut!!!
09.06.2004 14:05:17
Andi
Hey Andi,
jetzt klappt es endlich, ich richte es gerade für die anderen Tabellenblätter ein! Gibt es auch eine Möglichkeit in das Druckermakro eine Userform einzurichten. D.h. nachdem ich den Druckerbutton gedrückt habe öffnet sich eine Userform in der ich zwischen allen Tabellenblättern auswählen kann. Mein eigenes, was wohl am häufigsten gedruckt wird, soll dabei ganz oben stehen. So ne Scrollbox vielleicht oder welches Medium ist am besten zum Auswählen? Naja und naqchdem ich die Seite gewählt habe soller diese drucken wie bisher! Ist das sehr schwierig? Könntest du mir dabei helfen? Klappt aber jetz echt anscheinend reibungslos. Habe deine anderen Ideen auch eingebaut! Sind super!
Vielen DAnk für deine Hilfe!
MFG Andi
Anzeige
Nachfrage
09.06.2004 14:19:36
Andi
Warum steht im Modelcode unten das Tabellenblatt UG? Ich habe das in die anderen Tabellenblätter integriert und es funktioniert trotzdem, also zum Beispiel bei BM kommt BM als Druck heraus! (so soll es ja auch sein) OBwohl UG im Modulcode steht. Was bedeutet der Code?
Next
Sheets("UG").PageSetup.PrintArea = "$A$1:" & Cells(lRow, lCol).Address
Application.EnableEvents = False
ActiveSheet.PrintOut
Application.EnableEvents = True
End Sub
Leider kann ich über das Druckersymbol aus der Symbolleiste nicht mehr drucken, dann schmeißt er mir die Fehlermedlung heraus und zeigt die Zeile Sheets("UG") an! Deswegen auch meine Nachfrage! Ich möchte ja auch die nichtpersönlichen (Aktuelle Aufgaben) ausdrucken und nicht nur die persönlichen (UG, BM, etc)
AW: Nachfrage
09.06.2004 15:05:50
Andi_H
oje, ist ein Fehler von mir. Ändere das Sheets("UG") in activesheet um., hab da gestern nur was versucht.
AW: Nachfrage
09.06.2004 15:21:08
Andi
Hey,
kein Problem, hast mir ja schon super weitergeholfen.
Aber bei den nicht persönlichen schmeißt er mir immer noch eine Fehlermeldung heraus. Liegt es daran, dass in Aktuelle Aufgaben kein Button ist und ich das Druckersymbol aus der Symbolleiste nehme? Er zeigt den Fehler an und dann druckt er das ganze Tabellenblatt. WIe kann ich die den ansteuern? Möglichst wie ich das eben erklärt habe?
ActiveSheet.PageSetup.PrintArea = "$A$1:" & Cells(lRow, lCol).Address Fehler!!!!!!!!!
Application.EnableEvents = False
ActiveSheet.PrintOut
Application.EnableEvents = True
End Sub
AW: Nachfrage
09.06.2004 15:34:19
Andi_H
welche Fehlermeldung bringt er denn da?
schreib mal folgende Zeile:
msgbox "Zeile:" & lrow & " Spalte:" & lcol
ActiveSheet.PageSetup.PrintArea = "$A$1:" & Cells(lRow, lCol).Address Fehler!!!!!!!!!
eigentlich dürfte nur ein Fehler auftauchen wenn lrow oder Lcol = 0 sind.
Muß jetzt aber leider weg, schau ich mir heute an wenn ich heimkomme.
bis morgen früh sag ich dir bescheid.
AW: Danke schön für díe Tipps, Sind gut!!!
09.06.2004 15:25:37
Andi_H
ja das geht mit Userform und einem Listenfeld (ListBox)
die einzige schwierigkeit ist der Druckbutton in der Symbolleiste.
Hier soll ja auch die Userform erscheinen, der Druckbefehl wurde aber bereits gegeben.
Hier mußt du den Druckbefehl sperren (mit Cancel = true im BeforePrint) und nach der Auswahl in der Userfrom nochmals aktivieren.
Statt dem Activesheet im Code mußt du entweder das ausgewählte sheet aus der Listbox auslesen oder in einer Globalen variable den namen übergeben.
Ich schau mal ob ich zuhause was in der art finde, kann aber etwas dauern weil ich heute dazu keine Zeit mehr habe. Falls der Threat bis dahin nicht mehr sichtbar ist, meine Emailadresse steht in Profile
Gruß
Andi
Email
09.06.2004 15:44:40
Andi
Hey Andi,
kein Problem wäre super, wenn du was finden würdest. Schreib dich am Montag mal kurz an, fahre übers Wochenende weg! Da wo es keine Computer und kein VBA gibt! Vielleicht kommen mir so noch ein paar Ideen! Sonst stell ich es Montag oder Dienstag nochmal rein!
Vielen Dank für deine Mühe! War super!
Schönes Wochenende!
MFG Andi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige