30.01.2020, 09:52
Hallo zusammen,
ich habe einen Command-Button zum Drucken programmiert.
Kurz zur Erklärung. In dem Excel-Reiter gibt es ein Protokoll, welches gedruckt werden soll. (im Bereich $A$1:$CX$119).
Durch den Drucken-Button wird alles über einen PDF-Creator in einer PDF gespeichert.
Über eine Bildlaufleiste wird das Protokoll mit neuen Daten gefüllt.
1 ActiveSheet.PageSetup.PrintArea = "$A$1:$CX$119"
2 Application.Dialogs(xlDialogPrint).Show
3 ActiveSheet.Cells(11, 107).Activate //Diese Zelle gibt an, welches Protokoll gerade angezeigt wird.
4 ActiveCell.Value = ActiveSheet.Cells(6, 107) //Diese Zelle gibt an, von welcher Dokumentennummer an gedruckt werden soll.
5 While ActiveCell.Value < ActiveSheet.Cells(8, 107) //Diese Zelle gibt an bis zu welcher Dokumentennummer gedruckt werden soll.
6 ActiveCell.Value = ActiveCell.Value + 1
7 If ActiveSheet.Cells(66, 72) = "" Then ActiveCell.Value = ActiveCell.Value + 1 Else ActiveSheet.PrintOut //(66, 72 ist eine Zelle, welche leer ist wenn keine Daten für dieses Protokoll vorliegen)
8 Wend
Bis auf zwei Mängel funktioniert der Code auch. Die Probleme bestehen darin, dass er einmal das derzeitige Protokoll druckt, bevor es zu dem Startwert geändert wird.(Zeile 4)[Das Protokoll aus Zeile 3 wird somit einmal gedruckt bevor Zeile 4 den Wert ändert]. Und das zweite Problem besteht darin, dass er immer ein Protokoll zuviel rausfiltert, wenn zwischendurch immer mal leere Protokolle sind. (welche über Zeile 7 rausgefiltert werden)
Damit meine ich, dass wenn Protokoll 5-7 leer sind, dann druckt er Protokoll 5-8 nicht. Also geht jedesmal eine Seite verloren, welche ich benötige.
Bitte erklärt mir, weshalb mein Code nicht richtig funktioniert.
Mit freundlichen Grüßen
Lucas
ich habe einen Command-Button zum Drucken programmiert.
Kurz zur Erklärung. In dem Excel-Reiter gibt es ein Protokoll, welches gedruckt werden soll. (im Bereich $A$1:$CX$119).
Durch den Drucken-Button wird alles über einen PDF-Creator in einer PDF gespeichert.
Über eine Bildlaufleiste wird das Protokoll mit neuen Daten gefüllt.
1 ActiveSheet.PageSetup.PrintArea = "$A$1:$CX$119"
2 Application.Dialogs(xlDialogPrint).Show
3 ActiveSheet.Cells(11, 107).Activate //Diese Zelle gibt an, welches Protokoll gerade angezeigt wird.
4 ActiveCell.Value = ActiveSheet.Cells(6, 107) //Diese Zelle gibt an, von welcher Dokumentennummer an gedruckt werden soll.
5 While ActiveCell.Value < ActiveSheet.Cells(8, 107) //Diese Zelle gibt an bis zu welcher Dokumentennummer gedruckt werden soll.
6 ActiveCell.Value = ActiveCell.Value + 1
7 If ActiveSheet.Cells(66, 72) = "" Then ActiveCell.Value = ActiveCell.Value + 1 Else ActiveSheet.PrintOut //(66, 72 ist eine Zelle, welche leer ist wenn keine Daten für dieses Protokoll vorliegen)
8 Wend
Bis auf zwei Mängel funktioniert der Code auch. Die Probleme bestehen darin, dass er einmal das derzeitige Protokoll druckt, bevor es zu dem Startwert geändert wird.(Zeile 4)[Das Protokoll aus Zeile 3 wird somit einmal gedruckt bevor Zeile 4 den Wert ändert]. Und das zweite Problem besteht darin, dass er immer ein Protokoll zuviel rausfiltert, wenn zwischendurch immer mal leere Protokolle sind. (welche über Zeile 7 rausgefiltert werden)
Damit meine ich, dass wenn Protokoll 5-7 leer sind, dann druckt er Protokoll 5-8 nicht. Also geht jedesmal eine Seite verloren, welche ich benötige.
Bitte erklärt mir, weshalb mein Code nicht richtig funktioniert.
Mit freundlichen Grüßen
Lucas