Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzahl der zu druckenden Blätter zählen
sepp
hallo!
ich benötige eine lösung für eine exceltabelle.
ich muss einmal im monat die weckliste ausdrucken, ich möchte mir aber das editieren jedes einzelnes blattes sparen.
im bereich des datums (tag) soll der wert automatisch gesetzt werden, wenn ich die anzahl der zu druckenden blätter an den drucker sende.
30 x druckauftrag
1. druckauftrag in zeile soll stehen: 01. november 2010
2. druckauftrag in zeile soll stehen: 02. november 2010
3. druckauftrag in zeile soll stehen: 02. november 2010
. . .
30. druckauftrag in zeile soll stehen: 30. november 2010
ich fand mal ein script, aber das funktioniert nicht mit office 2003
hätte da jmd einen vorschlag oder lösung?
gruss
sepp
AW: Anzahl der zu druckenden Blätter zählen
09.11.2010 09:44:22
Tim
Mag sein, dass das ein wenig umständlich ist, Aber du brauchst meiner meinung nach 4 Zellen mit Infos: Jahr, Monat , AnfangsTag (1) Endtag (z.B. 30 ).
Dann in VBA ne Schleife von Anfangstag bis Endtag schreiben und dir jeweils das Datum dementsprchen zusammensetzen und in die Betreffende Zelle schreiben lassen. .value = Tag & "." & Monat & " " & Jahr
und dann innerhalb der schleife den Druckauftrag senden :
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Ich habe die Erfahrung gemacht, dass VBA schneller Druckaufträge sendet, als der Druckker sie entgegennehmen kann, daher empfielt sich nach dem Druckauftrag das einblenden einer MsgBob. Das bringt eine kurze Pause und mann kann weiterklicken, wenn der Drucker den Auftrag entgegengenommen hat.
Dim Antwort
Antwort = MsgBox(" ist der Drucker wieder bereit?", vbOKCancel, "Etiketten drucken")
Hoffe ich konnte helfen, bei weiteren Fragen einfach melden
Gruß
Tim
Anzeige
AW: Anzahl der zu druckenden Blätter zählen
09.11.2010 12:22:29
sepp
hallo tim!
danke für die schnelle antwort.
ich bin nicht gerade der crack in vba... ich hatte mal die grundkenntnisse vor 11 jahren in einem programmierkurs gelernt... aber seitdem nicht mehr gebraucht...
da ja monat und jahr (im grunde) statisch sind, benötige ich nur das tagesdatum.
eine msgbox macht meisstens stress beim benutzer, besser wäre es eine kleine pause einzulegen, ähnlich wsh "sleep 5" oder so in der richtung...
script:
Sub Tageszaehler()
' Dieses Programm druckt die aufsteigende Tage in der
' Excel Weckliste
Dim xzellwert As Integer
Dim yzellwert As Integer
Dim startnummer As Integer
Dim endnummer As Integer
Dim ausdrucke As Integer
Dim i As Integer
'Tageseingabe:
startnummer = Application.InputBox("Bitte Tag eingeben für ERSTER Tag: ")
endnummer = Application.InputBox("Bitte Tag eingeben für LETZTER Tag: ")
ausdrucke = endnummer - startnummer + 1
'Zelleingabe
xzellwert = Application.InputBox("Bitte Spalten-nummer der variablen Zelle eingeben: ")
yzellwert = Application.InputBox("Bitte Zeilen-nummer der variablen Zelle eingeben: ")
' Bestaetigung der Eingabewerte:
MsgBox "Ihr Tagesdatum ist in SPALTE " & xzellwert & " / ZEILE " & yzellwert _
& ". Sie starten den DRUCK bei Tag: " & startnummer _
& " und enden bei Tag: " & endnummer & _
". Bitte legen Sie die folgende Anzahl an Blaettern in Ihren Standarddrucker ein: " _
& ausdrucke & ". Danach drücken Sie bitte OK!!! " & _
"V O R S I C H T!!! - Alle Blätter werden OHNE UNTERBRECHUNG ausgedruckt!", _
vbYesNoCancel
'Seriendruck
For i = startnummer To endnummer
ActiveSheet.Cells(yzellwert, xzellwert).Value = i
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next i
'ActiveWorkbook.Sheets("Tabelle1").Range("Test").Value = "Test1"
'Beendigung des Druckauftrages
'MsgBox "Folgende Anzahl an Blaettern wurde auf Ihrem Standarddrucker gedruckt: " _
'& ausdrucke, vbOKOnly
End Sub
bei diesem script hab ich eben das problem, dass es zwar 30 seiten druckt, aber nichts im feld drinne steht.
danke, gruss sepp
Anzeige
AW: Anzahl der zu druckenden Blätter zählen
09.11.2010 12:53:24
Tim
Hallo Sepp,
Ich habe das Script gerade ausprobiert und es schein mir zu funktionieren. ( Habs mit zelle 1A probiert ) und da schreibt er mir die Zahlen 1 bis 30 rein und druckt dann.
Fehlerquellen die mir einfallen:
1. Ist denn auch das richtige Tabellenblatt aktiviert ? benutze mal Worksheets("Tabellename").Cells anstatt ActiveSheett
2. Liegt die Zelle die du ansteuert im zu druckenden Bereich ? ... Druckbereich festlegen.
3. Formatierung der Zelle in die er schreibt. ( Schrift sollte nicht Weis sein )
Setze doch mal einen Haltepunkt bei ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ( Links neben die Zeile in den graue Bereich klicken und ein gelber Punkt erscheint und die Zeile wird markiert, dann kannst du im Excelfenster nachprüfen, welche Zelle er denn verändert hat.
Gruß
Tim
Anzeige
AW: Anzahl der zu druckenden Blätter zählen
09.11.2010 15:03:05
sepp
hallo tim!
kann ich die abfrage der zu verändernden zelle festlegen, so dass die abfrage nicht kommt?
ActiveSheet.Cells(yzellwert, xzellwert).Value = i
also das nur start und endtag abgefragt werden...
gruss
sepp
AW: Anzahl der zu druckenden Blätter zählen
09.11.2010 15:17:47
Tim
Ich verstehe deine Frage nicht zu 100 %.
Klar kannst du den Zellbezug festlegen. Einfach anstatt yzellwert und xzellwert feste Werte nehmen. z.B. 1 und 1 für festen Bezug auf Zelle A1.
ActiveSheet.Cells(1,1).Value = i
Falls ich jetzt auf dem falschen Dampfer bin, formuliere die Frage bitte anderst
AW: Anzahl der zu druckenden Blätter zählen
09.11.2010 15:41:48
sepp
ich hab das hinbekommen tim ;)
nun bräuchte ich noch ein clickevent neben dem druckbereich, der das macro startet.
hast du da nen vorschlag?
ich kann mich dunkel an einen befehl namens "call" erinnern...
Anzeige
AW: Anzahl der zu druckenden Blätter zählen
09.11.2010 15:49:36
sepp
ich hab das hinbekommen tim ;)
nun bräuchte ich noch ein clickevent neben dem druckbereich, der das macro startet.
hast du da nen vorschlag?
ich kann mich dunkel an einen befehl namens "call" erinnern...
AW: Anzahl der zu druckenden Blätter zählen
09.11.2010 15:44:39
Rudi
Hallo,
Anfangsdatum in Weckliste!A1 schreiben und Makro starten.
In ein Modul:
Sub WeckListe()
Dim lngDate As Long, dteDatum As Date
dteDatum = Range("A1")  'anpassen
For lngDate = dteDatum To DateSerial(Year(dteDatum), Month(dteDatum) + 1, 0)
With Sheets("Weckliste")
.Range("A1") = Format(lngDate, "DD.MMMM.YYYY") 'anpassen
.PrintOut
End With
Next
End Sub

Gruß
Rudi
Anzeige
Ergänzung
09.11.2010 15:54:17
Rudi
Hallo,
Wenn Weckliste!A1 geändert wird, wirst du gefragt, ob du drucken willst.
In das Modul der Tabelle:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
If MsgBox("Ausdruck starten?", vbYesNo, "Drucken") = vbYes Then
On Error GoTo ERRHDL
Application.EnableEvents = False
WeckListe
End If
End If
ERRHDL:
Application.EnableEvents = True
End Sub

Gruß
Rudi
AW: Ergänzung
09.11.2010 16:45:54
sepp
hallo tim, hallo rudi!
hat geklappt, script läuft ;)
ich sollte mich wirklich wieder dahinter klemmen...
danke für die hilfe!

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige