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

Prozedur vor Druck, auch verzweifelt...

Prozedur vor Druck, auch verzweifelt...
17.01.2003 09:37:24
Sebastian
Tag zusammen,

ich verzweifel auch langsam. Also ich habe einen Button, der ermöglicht per Auswahl alle Sheets eines Blattes zu drucken. Bevor diese DruckBox erscheint, soll aber in KM-Geld und Verauslagte Kosten gegangen werden und dort die leere Zeilen gelöscht werden (ab bestimmten Bereich). Der Code stimmt eigentlich so, denn wenn man ihn auf Workbook-beforePrint legt und dann in den einzelnen Blättern druckt, klappt es. Auch wenn man ihn auf worksheet.activate der jeweiligen Blätter legt, klappt es. Ich weiß echt nicht mehr weiter. Wodran kann es liegen????

Private Sub Print_Sheets_Button_Click()

Dim r As Long

Application.ScreenUpdating = False

' vor dem Druck von KM-Geld werden die Leerzeilen gelöscht
Sheets("KM-Geld").Select
ActiveSheet.Unprotect ("test")
For r = ActiveSheet.UsedRange.Rows.Count To 9 Step -1
If Application.WorksheetFunction.CountA(Range(Cells(r, 1), Cells(r, 10))) = 0 Then Rows(r).Delete
Next r
ActiveSheet.Protect ("test")

' vor dem Druck von Verauslagte Kosten werden Leerzeilen gelöscht
Sheets("Verauslagte Kosten").Select
ActiveSheet.Unprotect ("test")
For r = ActiveSheet.UsedRange.Rows.Count To 13 Step -1
If Application.WorksheetFunction.CountA(Range(Cells(r, 1), Cells(r, 10))) = 0 Then Rows(r).Delete
Next r
ActiveSheet.Protect ("test")


Sheets("Monatsübersicht").Select

BlattDruckAufrufen

End Sub

VIELEN DANK schon mal an ALLE, die mich vor dem Wahnsinn retten!!!
Sebastian

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Prozedur vor Druck, auch verzweifelt...
17.01.2003 10:38:52
Georg_Zi
Hallo Sebastian

Du schreibst der geht geht, ich habe jetzt nicht gelesen wo das Problem ist.

Gruß Georg

Re: Prozedur vor Druck, auch verzweifelt...
17.01.2003 10:44:37
Sebastian
Ach so ;-)

wenn man mit f8 durchgeht, geht er zwar in die Sheets, aber er löscht die Zellen nicht. Muss ich den Cursor vorher noch irgendwo positionieren...?!

Re: Prozedur vor Druck, auch verzweifelt...
17.01.2003 10:57:04
Hajo_ZI
Hallo Sebastian

das soll doch vor dem Druck passieren, Warum nicht in VBA in DieseArbeitsmappe folgenden Code


Option Explicit

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim r As Long
Application.ScreenUpdating = False
If ActiveSheet.Name = "KM-Geld" Then Exit Sub
' vor dem Druck von KM-Geld werden die Leerzeilen gelöscht
With Sheets("KM-Geld")
.Unprotect ("test")
For r = .UsedRange.Rows.Count To 9 Step -1
If Application.WorksheetFunction.CountA(.Range(.Cells(r, 1), .Cells(r, 10))) = 0 Then .Rows(r).Delete
Next r
.Protect ("test")
End With
ElseIf ActiveSheet.Name = "Verauslagte Kosten" Then
' vor dem Druck von Verauslagte Kosten werden Leerzeilen gelöscht
With Sheets("Verauslagte Kosten")
.Unprotect ("test")
For r = .UsedRange.Rows.Count To 13 Step -1
If Application.WorksheetFunction.CountA(.Range(.Cells(r, 1), .Cells(r, 10))) = 0 Then .Rows(r).Delete
Next r
.Protect ("test")
End With
End If
Application.ScreenUpdating = True
End Sub

Code eingefügt mit: Excel Code Jeanie

wobei ich schreiben muß mit der Funktion Application.WorksheetFunction.CountA habe ich noch nicht gearbeitet.

Code Jeanie
Frage
Das Umsetzen nach Html klappt perfekt, auch die Ansicht in den Foren ist gegeben. Bei manchen Foren kann man aber anscheinend nicht den dargestellten Code nach VBA rückkopieren. Warum?
Antwort
Dies liegt nicht an der Code Jeanie !!! Manche Foren interpretieren anscheinend < pre > < /pre > Tags nicht richtig und erzeugen am Zeilenende einen weichen Zeilenumbruch anstatt eines harten Zeilenumbruches. Dies führt dazu, dass im VBA-Editor die Zeilen hintereinander geschrieben werden. Zum Rückkopieren in solchen Fällen: Fügen Sie den kopierten Code aus dem Forum nach Word ein, kopieren Sie ihn dort wieder und fügen Sie ihn dann im VBA - Editor ein

Gruß Georg

Anzeige
Re: Prozedur vor Druck, auch verzweifelt...
17.01.2003 11:08:10
Sebastian
er scheint mir was machen zu wollen, gibt mir aber den Fehler, dass ElseIf ohne If verwendet wird. Warum??
Re: Prozedur vor Druck, auch verzweifelt...
17.01.2003 11:11:26
Hajo_ZI
Hallo Sebastian

ein Hallo zu Beginn und ein Gruß am Ende läst den Beitrag doch gleich viel freundlicher aussehen. Auch wenn Du den Beitrag am Computer eingibst sitzen an der anderen Seite doch Leute und keine Maschinen die Deine Frage beantworten und da sollte Zeit für die paar Worte doch vorhanden sein.

Das ist noch ein Rest vom ersten Versuch übrig geblieben. Lösche Exit Sub. Endschuldigung.

Gruß Hajo

Re: Prozedur vor Druck, auch verzweifelt...
17.01.2003 11:24:11
Nepumuk
Hallo Sebastian,
markiere mal die Zeilen die nicht gelöscht werden, drücke auf Entf und lass das Makro nochmal laufen. Da sind möglicherweise nur Blanks in den Zellen.
Gruß
Nepumuk
Anzeige
Re: Prozedur vor Druck, auch verzweifelt...
17.01.2003 11:24:34
Sebastian
Hallo Hajo,

sorry wegen dem, aber ich handhabe das immer so, dass ich beim posting Hallo und Grüße schreibe. Das Antworten empfinde ich als eine Art "Telefonieren", da sage ich ja auch nicht vor jeder Antwort Hallo... aber okay, ich bin auch immer für mehr Menschlichkeit im Netz zu haben.

So, nun aber zu meinem Problem, welches immernoch nicht funktioniert. Das scheint mir daran zu liegen, dass man activesheet nicht benutzen kann. Weil der DruckBox.Button liegt auf einem anderen Sheet und km und Kosten werden in dem Sinne ja mittels der Box nicht aktiviert. Soll ich den vielleicht lieber in die Box legen? das ist der Code:

Private Sub UserForm_Initialize()
Dim ws As Worksheet
For Each ws In Worksheets
ListBox1.AddItem ws.Name
Next ws
ListBox1.MultiSelect = fmMultiSelectMulti
End Sub
Private Sub PrintBtn_on_UserForm_Click()

Dim i%
Dim BoAntwort As Boolean

BoAntwort = Application.Dialogs(xlDialogPrinterSetup).Show
If BoAntwort = False Then Exit Sub

With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) = True Then _
Worksheets(.List(i)).PrintOut
Next i
End With

DruckBox.Hide

End Sub

Vielen Grüße und Dank für deine Mühen,Sebastian

Anzeige
Re: Prozedur vor Druck, auch verzweifelt...
17.01.2003 11:27:01
Sebastian
siehe meinen Beiträgen auch zu Hajo, wenn man es anderswo reinlegt läuft es ja komischerweise...
Re: Prozedur vor Druck, noch offen
17.01.2003 11:33:03
Georg_Zi
Hallo Sebastian

das sind doch ganz andere Vorraussetzungen. Bisher war nicht die Rede von einem Button im Register.
Ich bin leider nicht der Fachmann für Steuerelemente in der Tabelle.

Gruß Georg (Hajo)

Re: Prozedur vor Druck, auch verzweifelt...
17.01.2003 11:36:23
Nepumuk
Hallo Sebastian,
dann lass den Code doch im Worksheet_BeforePrint - Ereignis, dort mach erauch nichts anderes als in deiner Routine, das aber wenigstens korrekt.
Gruß
Nepumuk
Re: Prozedur vor Druck, auch verzweifelt...
17.01.2003 11:38:58
Sebastian
Hallo Nepomuk
dann hast du meine Beiträge nicht verstanden... eben da macht er es ja nicht, nur wenn man sich auf einem der Blätter befindet. Wenn ich die Box nutze, gehts nicht.
Grüße,Sebastian
Anzeige
ich hatte keine Lust mehr
17.01.2003 11:44:39
Sebastian
Hallo ihr beiden,

bevor ihr euch weiter bemüht, habe es jetzt einfach als erstes auf den Button gelegt:

Private Sub Print_Sheets_Button_Click()

Dim r As Long

Application.ScreenUpdating = False

' vor dem Druck von KM-Geld werden die Leerzeilen gelöscht
With Sheets("KM-Geld")
.Unprotect ("test")
For r = .UsedRange.Rows.Count To 9 Step -1
If Application.WorksheetFunction.CountA(.Range(.Cells(r, 1), .Cells(r, 10))) = 0 Then .Rows(r).Delete
Next r
.Protect ("test")
End With
' vor dem Druck von Verauslagte Kosten werden Leerzeilen gelöscht
With Sheets("Verauslagte Kosten")
.Unprotect ("test")
For r = .UsedRange.Rows.Count To 13 Step -1
If Application.WorksheetFunction.CountA(.Range(.Cells(r, 1), .Cells(r, 10))) = 0 Then .Rows(r).Delete
Next r
.Protect ("test")
End With

Danke euch beiden!!!
Grüße, Sebastian

BlattDruckAufrufen

Application.ScreenUpdating = True

End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige