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

Seriendruck Anpassung Makro

Seriendruck Anpassung Makro
27.01.2014 17:53:17
Excel
Hallo,
ich habe es einfach nicht geschafft bestehende Beiträge auf meine Wünsche zu übertragen. Wer kann helfen?
Ich habe folgenden aufgezeichneten Code der gut funktioniert:
Sheets("Stammdaten").Select
Range("A5").Select
ActiveCell.FormulaR1C1 = "x"
Sheets("Anschreiben").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Sheets("Stammdaten").Select
Selection.ClearContents
Range("A6").Select
ActiveCell.FormulaR1C1 = "x"
Sheets("Anschreiben").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Sheets("Stammdaten").Select
Selection.ClearContents
Also in Spalte A Tabelle "Stammdaten" (ab A5) wird ein x gesetzt. (Dieses steuert die Einträge der zu druckenden Tabelle "Anschreiben")
Dann erfolgt der Druck des Anschreibens.
Das x wird gelöscht und in die nächste Zeile der Spalte A geschrieben, um dann diese Werte ins ANschreiben zu übernehmen und den Druck des Anschreibens auszulösen.
Dies soll so weitergehen, bis das Ende der Einträge in Tabelle "Stammdaten erreicht ist. Das Ende ist abhängig von den Einträgen ab Spalte B. (Also: Wenn B10=""; nicht mehr Drucken!)
Da ich weder das Makro mit jeder Zeilenzahl in "Stammdaten" anpassen will, noch die möglichen Einträge auf die Zahl der Makro-Sprünge begrenzen wil, suche ich die eine Lösung mit enstsprechender Bedingungsabfrage.
Ich hoffe ich hab mich verständlich ausdrücken können udnsage schomn einmal Danke und Grüße
Alex

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Seriendruck Anpassung Makro
27.01.2014 18:33:06
Matze
Hallo Alex,
mal sehn ob mein VBA ausreicht um das um zu setzen:
markieren den Bereich der Spalte mit den "x" ZB A5 und A9 ein X dabei markiere den Bereich A5:A9
(je weniger du markierst um so weniger Zellen muss er durchlaufen.)
Habe erst mal nur die Druckvorschau aufrufen lassen, das Print kannst du später starten.
Sub Anschreiben_drucken()
Dim rngZelle As Range
With Sheets("Stammdaten")
For Each rngZelle In Selection.Cells
If rngZellw = "x" Then 'Abfrage ob "x" gesetzt
With Sheets("Anschreiben") 'Mache den Druck auf Blatt
.PrintPreview 'Vorschau
'.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
End With
.Selection.Cells.ClearContents 'lösche alle "x" im selektierten Bereich
Next
End Sub
Gruß Matze

Anzeige
Korrektur,...da fehlt noch einiges
27.01.2014 18:36:37
Matze
Hallo Alex,
so nun den hier mal testen:
Option Explicit
Sub Anschreiben_drucken()
Dim rngZelle As Range
With Sheets("Stammdaten")
For Each rngZelle In Selection.Cells
If rngZellw = "x" Then 'Abfrage ob "x" gesetzt
With Sheets("Anschreiben") 'Mache den Druck auf Blatt
.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
End With
.Selection.Cells.ClearContents 'lösche alle "x" im selektierten Bereich
End If
Next rngZelle
End With
End Sub
Matze

AW: Seriendruck Anpassung Makro
27.01.2014 18:39:33
JoWE
Hi Alex,
leider sagst Du nicht was dann jeweils von wo nach wo in das
Blatt Anschreiben kopiert wird, aber im Prinzip könnte es vllt. so klappen:
Option Explicit
Sub printAbrechnungen()
Dim shSD As Worksheet
Dim shAS As Worksheet
Dim zeile As Long
Dim spalte As Long
Dim i As Long
Set shSD = ThisWorkbook.Sheets("Stammdaten")
Set shAS = ThisWorkbook.Sheets("Anschreiben")
With shSD
For i = 5 To shAS.Cells(shAS.Rows.Count, 2).End(xlUp).Row
.Cells(i, 2) = "x"
With shAS
'hier werden die von 'i' abhängigen Werte aus der Tabelle
'"Stammdaten" in die Tabelle "Anschreiben" übertragen
'da ich nicht sehe welche Daten in welche Zelle sollen
'hier nur mal beispielsweise diese Zeilen
.Cells(6, 3) = .Cells(i, 3)
.Cells(7, 3) = .Cells(i, 4)
End With
shAS.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
.Cells(i, 2).ClearContents
Next
End With
End Sub
Ich würde es an Deiner Stelle mit einem Word-Serienbrief auf Basis der Exceltabelle versuchen.
Du könntest Dir die Programmierarbeit sparen.
Gruß
Jochen

Anzeige
AW: korrektur
27.01.2014 18:51:59
JoWE
uups,
hier:
For i = 5 To shAS.Cells(shAS.Rows.Count, 2).End(xlUp).Row
muss es so lauten:
For i = 5 To .Cells(.Rows.Count, 2).End(xlUp).Row
.-)

AW: Seriendruck Anpassung Makro
28.01.2014 08:28:31
Excel
Also erst einmal vielen Dank Matz und JoWe... Ich habe mich einfach nicht präzise genug ausgedrückt.
Das Makro muss die x immer einzeln und nacheinander in die nächste freie Zelle stellen (die rechts davon mit Daten belegt ist), da im Anschreiben diese mit x gekennzeichnete Zeile mit sverweis-Funktion ausgelesen wird. Dabei stehen die Daten im Anschreiben in verschiedenen Spalten und Zeilen. Mehrfachkennzeichnungen mit x sind im Stammdatenregister nicht sinnvoll möglich.
Es gibt quasi die Regel: In Stammdaten Spalte A5:A ist nur immer EIN x erlaubt.
Deshalb wird in meinem aufgezeichneten Makro immer das x der gerade gedruckten Datenzeile in Stammdaten gelöscht und in der nächsten Zelle ein nächstes gesetzt.
Ich hoffe ich hab Euch jetzt nicht "weich" gequatscht.
Danke und Grüße, Alex

Anzeige
AW: Seriendruck Anpassung Makro
28.01.2014 08:30:01
Excel
"noch offen" vergesse ;)

Man nennt es auch Schleife
28.01.2014 11:34:47
Excel
Habe beim weiteren Suchen die VBA Variante Schleife gefunden. Und ich denke das ist was ich brauch, aber nicht kann :(
Die Schleife wird so lange ausgeführt
(1. Schreibe x in Tabelle Stammdaten Zelle A5 wenn in Stammdaten B5 ein Eintrag vorhanen ""
2. Drucke das Blatt Anschreiben
3. Lösche das x aus Stammdaten Zelle A5
4. gehe eine Zelle weiter, also Stammdaten A6)
Jetzt müsste es wieder bei 1. weitergehen.
Ich bin gespannt

AW: genau das war der Vorschlag...
28.01.2014 20:24:26
JoWE
hier nochmal:
Sub printAbrechnungen()
Dim shSD As Worksheet
Dim shAS As Worksheet
Dim i As Long
Set shSD = ThisWorkbook.Sheets("Stammdaten")
Set shAS = ThisWorkbook.Sheets("Anschreiben")
With shSD
For i = 5 To .Cells(.Rows.Count, 2).End(xlUp).Row
.Cells(i, 2) = "x"
shAS.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
.Cells(i, 2).ClearContents
Next
End With
End Sub

Jochen

Anzeige
AW: und nochmal korrigiert
28.01.2014 20:40:11
JoWE

Sub printAbrechnungen()
Dim shSD As Worksheet
Dim shAS As Worksheet
Dim i As Long
Set shSD = ThisWorkbook.Sheets("Stammdaten")
Set shAS = ThisWorkbook.Sheets("Anschreiben")
With shSD
For i = 5 To .Cells(.Rows.Count, 2).End(xlUp).Row
.Cells(i, 1) = "x"
shAS.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
.Cells(i, 1).ClearContents
Next
End With
End Sub

AW: und nochmal korrigiert
29.01.2014 12:57:22
Excel
Hej Jochen,
das ist die Lösung.
Funzt super.
Hab vielen Dank
und Grüße Alex

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige