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

Ständig ändernde Bereiche per druc

Ständig ändernde Bereiche per druc
13.08.2020 17:33:38
Robert
Hallo Ihr lieben Exeler!
Ich hätte mal wieder ein Problem, wo ich für Eure Hilfe sehr dankbar wäre.
Ich habe ein Makro geschrieben schlicht und Einfach. Es ist jetzt statisch und der jeweilige Druckbereich der einzelnen Arbeitsblätter ist so gestaltet, das die Formulare welche ausgefüllt sind gedruckt, + 2 Leerformulare. Da diese aber jede Woche unterschiedlich sein können, wäre es schön, wenn dieses Makro dynamsich feststellt bis zu welchen Stellen in den einzelnen Arbeitsblättern gedruckt werden müsste (also die die Ausgefüllt sind). Der gesamt Druckbereich geht von A1 bis EO34.
Gibt es eine Möglichkeit, Exel beizubringen dies zu bewerkstelligen.
Sub Drucken()
Sheets("Liefer Nord").Range("A1:CB34").PrintOut Copies:=1
Sheets("Liefer Mitte").Range("A1:CG34").PrintOut Copies:=1
Sheets("Liefer SO").Range("A1:DA34").PrintOut Copies:=1
Sheets("Liefer L1A").Range("A1:DU34").PrintOut Copies:=1
Sheets("Liefer L1B").Range("A1:DF34").PrintOut Copies:=1
Sheets("Liefer L1B").Range("A1:DF34").PrintOut Copies:=1
Sheets("Liefer L2").Range("A1:CL34").PrintOut Copies:=1
Sheets("Liefer L3").Range("A1:DU34").PrintOut Copies:=1
Sheets("Liefer L4").Range("A1:DU34").PrintOut Copies:=1
Sheets("Liefer L5").Range("A1:CL34").PrintOut Copies:=1
Sheets("Liefer L6 Nord").Range("A1:CV34").PrintOut Copies:=1
Sheets("Liefer L6 Süd").Range("A1:DK34").PrintOut Copies:=1
Sheets("Liefer Selbstabholer").Range("A1:AD34").PrintOut Copies:=1
End Sub

31
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ständig ändernde Bereiche per druc
13.08.2020 18:02:10
Werner
Hallo,
wenn es sich um einen zusammenhängenden Bereich handelt z.B. so:
Sheets("Liefer Nord").Range("A1").CurrentRegion.PrintOut Copies:=1
Gruß Werner
AW: Ständig ändernde Bereiche per druc
13.08.2020 18:25:51
Robert
Hallo Werner
Danke für Deine schnelle Antwort. Aber irgendwie bringt der mir jetzt nur den Kopüf und nur das erste Blatt.
Danke für deine Mühe.
LG Robert
AW: Ständig ändernde Bereiche per druc
13.08.2020 18:42:24
Werner
Hallo,
ich hatte geschrieben wenn es sich um einen zusammenhängenden Bereich handelt.
Zusammenhängend heißt, dass dazwischen keine komplett leeren Zeilen oder Spalten sind.
Ob das bei dir der Fall ist, weiß ich nicht. Ich kenne deine Datenstruktur nicht.
Das mußt du natürlich für alle Blätter machen.
Oder mit Schleife über alle "Liefer*" Blätter und UsedRange
Public Sub Drucken()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name Like "Liefer*" Then
ws.UsedRange.PrintOut Copies:=1
End If
Next ws
End Sub
Keine Ahnung was du mit + 2 Leerformulare meinst.
Gruß Werner
Anzeige
AW: Ständig ändernde Bereiche per druc
13.08.2020 21:17:37
Robert
Hallo Werner!
Dieses Makro haut nun wieder alle Lieferscheine raus. Es sollen aber bloss die sein, welche auch mit Personen hinterlegt sind. Erkennt man daran, wie im Beispiel, das ab AY12 Tageblatt und in AZ12 0 steht. Ab da sollte nicht gedruckt werden. Das ist aber auf allen Arbeitsblättern unterschiedlich.
Es würde auch eventuell reichen wenn ich wüsste wie ich es schreiben muss wenn ich in z.B. in AY1 die Formel =wenn(AZ12=0;AY2:BC34"") (wenn AZ12 0 0 dann schreibe vonAY2 bis BC34 nichts) Wie kann ich das schreiben das es Exel kapiert.
Danke im voraus
LG Robert
AW: Ständig ändernde Bereiche per druc
13.08.2020 21:25:54
Werner
Hallo,
Erkennt man daran, wie im Beispiel
und welches Beispiel denn bitte?
Das einzige was ich von dir habe ist ein Code, indem du Tabellebnlätter druckst, die alle mit "Liefer.." im Blattnamen beginnen.
Ich habe keine Ahnung von irgendeinem Tageblatt oder sonst was.
Entweder du lädst hier mal eine Beispieldatei mit Beispieldaten hoch in der du aufzeigst, was, wann, warum gedruckt werden soll, oder ich steig hier aus.
Hellsehen ist leider nicht so mein Ding.
Gruß Werner
Anzeige
AW: Ständig ändernde Bereiche per druc
13.08.2020 21:29:52
Robert
Wir haben uns überschnitten. Sorry meine Nachlässigkeit.
LG Robert
hast du dir....
13.08.2020 21:46:59
Werner
Hallo,
...die hochgeladene Datei eigentlich slebst mal angeschaut?
Gruß Werner
AW: hast du dir....
13.08.2020 22:21:12
Robert
Hallo Werner!
Ja ich weiß, es fehlen jegliche Bezüge. Ich dachte das es reicht wenn ab ay1 davon ausgegangen wird, das dort nicht mehr gedruckt werden soll. Oder über eine wenn Funktion und entsprechender Formel wie in ay1 alle Zellen nicht beschrieben werden wenn in aw12 eine 0 steht, was bei nichtbesetzten Lieferscheinen der Fall ist. Müsste ja nur wissen wie man exel anweist wenn die eine Bedingung erfüllt ( 0) ist in einer größeren Zellbereich ("") nichts zu schreiben. Morgen früh mach ich noch in kleinerer Form eine Beispielelmappe, wo die Daten drin stehen.
Sorry noch mal
LG Robert
Anzeige
AW: hast du dir....
14.08.2020 10:04:19
Robert
Hallo Werner,
ich habe jetzt eine Beispieldatei fertig gemacht, wo ich hoffe das man erkennt was ich mit Deiner Hilfe gerne tuen möchte. Habe auch einen Erklärung mit darauf geschrieben. Ich hoffe wir kommen so den Dingen näher auf die Spur. Danke für Deine Geduld.
LG Robert
https://www.herber.de/bbs/user/139630.xlsx
AW: hast du dir....
14.08.2020 10:09:11
Robert
Schick mal noch den Text von der Beispieldatei. Habe vergessen den Zeilenumbruch reinzuzaubern.
So sehen die Lieferlisten in der Praxis aus. In diesen Falle sollen die Lieferscheine von A1 bis Q34 gedruckt werden. Und danach der Rest sollte nicht gedruckt werden. Ist dies per Makro möglich. Ich dachte men könnte dabei immer V0 oder AA je nach der Gebenheit als Anhaltspunkt nutzen, wo in Tageblatt Stück 0 auftaucht, da ab da kein Zusteller mehr den Lieferschein erhält.
Anzeige
AW: hast du dir....
14.08.2020 13:55:30
Werner
Hallo,
meinst du so?
Sub Schaltfläche1_Klicken()
Dim ws As Worksheet, i As Long, loZeile As Long, loSpalte As Long
For Each ws In ThisWorkbook.Worksheets
If ws.Name Like "Liefer*" Then
With ws
loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 2 To .Cells(12, .Columns.Count).End(xlToLeft).Column Step 5
If .Cells(12, i) = 0 Then
loSpalte = i - 2
Exit For
End If
Next i
.Range(.Cells(1, "A"), .Cells(loZeile, loSpalte)).PrintPreview
End With
End If
Next ws
End Sub
Für den tatsächlichen Ausdruck musst du im Code .PrintPreview durch .PrintOut ersetzen.
Gruß Werner
Anzeige
AW: hast du dir....
14.08.2020 17:15:25
Robert
Hallo Werner!
Vielen herzlichen Dank. Genauso sollte es sein. Du bist nicht mit Geld zu bezahlen. Ich dachte mir so, wenn ich ein Beispiel habe, dann könnte ich einen zweiten Sachverhalt selbst entsprechend anpassen. Musste aber feststellen, das doch nicht ganz so einfach ist. Deshalb bereite ich noch mal eine vernünftige Beispielmappe vor, das Du noch einmal darüber schauen würdest. Wäre sehr nett von Dir wenn Du nix dagegen hast.
Für Deine Mühe und Geduld danke ich Dir im voraus.
LG Robert
AW: hast du dir....
14.08.2020 18:26:45
Robert
Ich würde jetzt mal die Beispieldatei einstellen. Eigentlich fast das gleiche wie in dem anderen Projekt. Es soll nur gedruckt bis wohin Zahlen über 0 stehen. Da wohl null steht, soll aus dem Druckbereich raus. Ich hoffe Du kannst mir noch mal helfen.
Vielen lieben Dank im voraus.
LG Robert
Anzeige
AW: hast du dir....
14.08.2020 18:31:20
Robert
Ich würde jetzt mal die Beispieldatei einstellen. Eigentlich fast das gleiche wie in dem anderen Projekt. Es soll nur gedruckt bis wohin Zahlen über 0 stehen. Da wohl null steht, soll aus dem Druckbereich raus. Ich hoffe Du kannst mir noch mal helfen.
Vielen lieben Dank im voraus.
LG Robert
https://www.herber.de/bbs/user/139643.xlsx
AW: hast du dir....
14.08.2020 19:26:13
Werner
Hallo,
du hälst wohl nicht wirklich viel davon Infos mit zu geben?
Sprechen wir hier auch wieder um diverse Blätter, die alle mit "Zentral?" beginnen und die alle gedruckt werden sollen?
Davon bin ich jetzt mal ausgegangen - das darf man aber auch gerne mitteilen. Ständiges Nachfragen macht nicht wirklich Spaß.
Option Explicit
Public Sub Drucken_Zentral()
Dim loZeile As Long, loSpalte As Long, ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name Like "Zentral*" Then
With ws
loZeile = .Cells(.Cells.Rows.Count, "A").End(xlUp).Row + 2
loSpalte = .Cells(5, .Columns.Count).End(xlToLeft).Column - 1
.Range(.Cells(1, "A"), .Cells(loZeile, loSpalte)).PrintPreview
End With
End If
Next ws
End Sub
Das funktioniert aber nur dann zuverlässig, solange immer in Spalte A ein Name erfasst ist und solange in Zeile 5 die 0 das Tabellenende markiert.
Gruß Werner
Anzeige
AW: hast du dir....
14.08.2020 20:27:25
Robert
JHallo Werner
Da hast Du recht. War aber jetzt unterwegs und wollte genau die Info noch nachreichen. Aber Du warst schneller. Es funktioniert genau so wie es sein soll
Vielen lieben Dank.
Ein schönes Wochenende wünsche ich Dir.
LG Robert
Gerne u. Danke für die Rückmeldung. o.w.T.
14.08.2020 21:21:33
Werner
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
17.08.2020 16:46:27
Robert
Hallo Werner!
Ich wende mich heute noch mal über diesen Kanal an Dich mit einer Bitte. In meiner Arbeitsmappe gibt es jede Woche Packzettel auszudrucken. Es wäre nicht schlecht wenn dies über ein Makro gehen könnte. Es sollen nur die Ausgedruckt werden, wo in E4, L4, in 7er Schritten bis CR4 E20 bis CR20 analogmehr als 0 oder nichts steht.Dadurch das die Namen relativ statisch sind kann die 0 auch mal dazwischen auftauchen (also E4 oder L4 usw.).Ich habe mal ein Beispielmappe gemacht wo ich hoffe das es gut zu ersehen ist. Das Feld CU1 bis FF26 müsste immer ausgedruckt werden. Von diesen Packlisten gibt es insgesamt je Tour 22 Arbeitsblätter. Diese sind alle gleich aufgebaut wie im Bespiel. Ich hoffe, das ich alle Infos erfasst habe. Habe mir zumindest Mühe gegeben.
Für Deine Mühe danke ich im voraus!
Danke noch mal für das Schaltflächenmakro.
LG Robert
https://www.herber.de/bbs/user/139666.xlsx
Anzeige
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
17.08.2020 18:40:41
Werner
Hallo,
ist mir noch unklar.
Nur ausdrucken wenn E4 und E20 beide ungleich Leer und beide ungleich 0 sind?
Also bezogen auf deine Beispielmappe:
Packzettel für beimer nicht ausdrucken weil AU4 zwar größer 0 aber AU20 gleich 0
gleiches für den Packzettel für f und j
die beiden letzten Packzettel werden auch nicht gedruckt, weil jeweisl beide Werte gleich 0
Wie sieht es andersrum aus (keine Ahnung ob das vorkommen kann):
Beispiel: L4 ist 0 - L20 ist 100 ausdrucken oder nicht?
Gruß Werner
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
17.08.2020 19:31:15
Robert
Danke für Deine schnelle Antwort. Ja es sollte in alle Richtungen funktionieren. zB. bei deinem Beispiel Au4 bildet am Ende einen Packzettel und AU20 einen separaten. Die werden dann geteilt. Es macht aber nichts wenn z.B AU20 0 Und AU4 45 also größer 0 als DIN a 4 gedruckt werden. Werden dann händisch geschnitten. Wichtig wäre wenn beim letzten im Beispiel CK4 und CK21 wo bei beiden 0 steht als letztes Gedruckt in dem Fall dann CD4 und CD 21 wird. Und wie gesagt immer die Seite CU1:FF26. Also beides wenn Bei x 4 oder 20 eine Zahl größer 0 steht. Hoffe das war schlüssig.
Danke
LG Robert
Anzeige
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
17.08.2020 22:50:53
Werner
Hallo,
hab mir deine Beispielmappe jetzt mal genauer angeschaut.
Da hast du ja einige "Seiten" drin die ausgeblendet sind. Was ist denn mit denen?
Und eine verbundene Zellen reicht über mehrere Seiten bis rein in die letzte Seite (die, die immer mit gedruckt werden soll). Was bitte soll das denn?
Gruß Werner
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
18.08.2020 09:54:19
Robert
Hallo Werner Guten Morgen!
Es sollen nur die Packzettel gedruckt werden. Die versteckten Zellen werkeln im Hintergrund und bringen in den Eingeblendeten Zellen die entsprechenden Ergebnisse. Hoffe das ist kein Problem. Da ich mich Autodidakt mit Exel erst seit 12/19 beschäftige habe ich auf solche Dinge wie die Kennzeichnung der Zeile bis zum Ende nie groß Wert gelegt. Konnte es ja manuell mit dem Druckbereich regulieren. Auf dem Packzettel ABG Nord ist das ja aber nicht der Fall. Die ganze Arbeitsmappe hochladen geht nicht da zu groß und ausserdem hätte ich da Bauchschmerzen mit Datenschutz usw.. Manuell klappt das mit der Druckerei. Hätte es aber gern über ein Makrowenn möglich. Die 0 in E4, usw und E20 oder ebend AU 4 und 20 habe ich als gängisten Anhaltspunkt gedacht um Exel über Makro den Befehl für den Druckbereich zu gegeben und wie gesagt, das letzte Blatt immer.
Hoffe ich konnte ein wenig zur Aufklärung beitragen und hoffe es könnte eine Lösung geben.
Vielen Dank im voraus
LG Robert
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
18.08.2020 10:25:31
Werner
Hallo,
geht das jetzt schon wieder los.
Mich interessiert nicht, was die ausgeblendeten Seiten "im Hintergrund werkeln".
Beantworte einfach die Fragen.
Schau dir deine Beispielmappe mal an. Ich habe alle Spalten eingeblendet.
1. Was ist mit den ausgeblendeten Seiten 15-21 ?
-kann es sein, dass die Anzahl der ausgefüllten Seiten, die dann auch gedruckt werden müssen, variiert? Sprich: können da weitere Seiten die geprüft und ausgedruckt werden sollen dazu kommen?
2. Schau dir mal die Zeilen 6, 7 und 20 an. Da sind verbundene Zellen drin. Die reichen von Seite 15 bis in die letzte Seite (die immer gedruckt werden soll) rein. Was soll das?
3. Die Daten der letzten zu druckenden Seite, hier Seite 22, ist auf zwei Seiten (21 und 22) verteilt. Siehe Zellen FA3, FA10, FA22, FA23, FA24 und FA 26. Was soll das?
Vielleicht solltest du dein Tabellenblatt mal entsprechend bereinigen.
https://www.herber.de/bbs/user/139683.xlsx
Gruß Werner
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
18.08.2020 11:05:37
Robert
Hallo Werner!
Sieht man doch was ein Fachmann wert ist. Ich bin halt nach wie vor Laie. Das sind Dinge, die waren für mich bis jetzt nicht relevant. Das was Du mir vor Augen geführt hast, war in meinen Überlegungen garnicht vorhanden. Aber und das macht den Profi aus, Du hast Recht. Deshalb habe ich die Seite 21 auf 15 Verlegt (das was tasächlich gedruckt werden soll und würde diese als die letzte zu druckende Seite deklarieren. Diese Seiten gibt es dann 22 mal pro tour und 12 touren sind es. Dashalb denk ich mal das das mit Packzettel* zu machen gehen müsste. Ich hoffe echt, das das so funktionieren kann, ich scheine es nicht besser zu Wissen, deshalb sorry.
LG Robert
https://www.herber.de/bbs/user/139685.xlsx
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
18.08.2020 12:44:20
Werner
Hallo,
teste mal.
Voraussetzung ist aber, dass der Aufbau aller Packzettel Blätter exakt identisch ist.
https://www.herber.de/bbs/user/139687.xlsm
Gruß Werner
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
18.08.2020 12:52:01
Robert
Hallo Werner!
Vielen Dank für Deine Mühe. In der Beispieldatei geht es ja top, genau wie gewollt. Ich muss jetzt in der eigentlichen Arbeitsmappe, die Packzettel umgestalten. Das wird eine gewisse Zeit in Anspruch nehmen. Wundere Dich nicht, ich gebe Dir dann eine Rückmeldung. Nicht das Du denkst es wird nicht daran gearbeitet.
Vielen Dank
LG Robert.
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
18.08.2020 21:08:05
Robert
Jetzt habe ich doch noch ein paar Fragen.
1. exakt identisch heißt das jede Zellenhöhe muss vom ersten bis letzten Packzettel gleich sein, genauso die Spaltenbreite,
2. oder reicht es wenn alles genau exakt in den jeweiligen Zellen steckt z.b. Formel in B3 vom ersten bis zum letzten Packzettel.
3.Wie muss ich es im Code schreiben wenn ich zB. Abg Nord und Abg Mitte Packzettel 1 gesondert abrufen und drucken möchte. Es gibt nähmlich 22 die nicht immer alle besetzt sind.
Ich hoffe Du fühlst Dich nicht genervt von mir.
Danke für Deine Mühe
LG Robert
Option Explicit
Public Sub Packzettel_drucken_Version1()
Dim i As Long, ws As Worksheet, raWeg As Range
For Each ws In ThisWorkbook.Worksheets
If ws.Name Like "Packzettel1 Nord 1 .Packzettel1 Mitte 1*" Then
With ws
For i = 5 To 96 Step 7
If WorksheetFunction.Sum(.Cells(4, i), .Cells(20, i)) > 0 Then
If raWeg Is Nothing Then
Set raWeg = .Cells(4, i).Offset(-3, -4).Resize(26, 7)
Else
Set raWeg = Union(raWeg, .Cells(4, i).Offset(-3, -4).Resize(26, 7))
End If
End If
Next i
If Not raWeg Is Nothing Then
Union(raWeg, .Range("CU1:CZ26")).PrintPreview
End If
End With
End If
Next ws
Set raWeg = Nothing
End Sub

AW: Gerne u. Danke für die Rückmeldung. o.w.T.
19.08.2020 13:02:44
Robert
Hallo Werner,Ich habe jetzt in der Beispieldatei das Arbeitsblatt Packzettel Nord 1 zweimal kopiert. So das ich drei identische exakt gleiche Packzettel habe. Jetzt kommt die Fehlermeldung Die Methode 'Union' für das Objekts '_Global' ist fehlgeschlagen. Ich weiss nicht was ich tun soll. Die erste Seite geht immer wie gewünscht und dann kommt die Fehlermeldung. Ich Danke Dir im voraus. Hoffe man kann was tun. Die Fragen habe ich mnir damit selbst beantwortet von oben, es muss galles Haargenau gleich sein, da sonst Fehler 400 kommt..
LG Robert


Option Explicit
Public Sub Packzettel_drucken_Version1()
Dim i As Long, ws As Worksheet, raWeg As Range
For Each ws In ThisWorkbook.Worksheets
If ws.Name Like "Packzettel*" Then
With ws
For i = 5 To 96 Step 7
If WorksheetFunction.Sum(.Cells(4, i), .Cells(20, i)) > 0 Then
If raWeg Is Nothing Then
Set raWeg = .Cells(4, i).Offset(-3, -4).Resize(26, 7)
Else
Set raWeg = Union(raWeg, .Cells(4, i).Offset(-3, -4).Resize(26, 7))
End If
End If
Next i
If Not raWeg Is Nothing Then
Union(raWeg, .Range("CU1:CZ26")).PrintPreview
End If
End With
End If
Next ws
Set raWeg = Nothing
End Sub

AW: Gerne u. Danke für die Rückmeldung. o.w.T.
19.08.2020 13:32:07
Werner
Hallo,
habe vergessen in der Schleife über die verschiedenen Worksheets die Variable raWeg wieder zu leeren.
Hier zwischen End With und Next ws die Variable raWeg wieder leeren.
    End If
Set raWeg = Nothing
Next ws
Gruß Werner
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
19.08.2020 16:12:42
Robert
Hallo Werner,
jetzt funktioniert es einwandfrei im Bespiel wie in der Liste. Wenn doch noch ein Problem geben sollte, dann würde ich mich noch einmal melden.
Ich Danke Dir von ganzen Herzen für Deine Mühen.
LG Robert

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige