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

ListBox multiselect läuft nicht rund...

ListBox multiselect läuft nicht rund...
13.05.2005 08:59:44
Matthias_FFM
Guten Morgen Forum,
über eine Userform mit multiselect werden die aktuellen Tabellenblätter zum Ausdruck eingelesen. Nach "Anklicken" der Tabellenblätter und Drücken des Start-Buttons sollen über die Funktion "

Private Sub Workbook_BeforePrint(Cancel As Boolean)" in "Dieses Arbeitsmappe" Formatierungen am Tabellenblatt vorgenommen werden, da der User ja nicht nur über das Userform ausdrucken kann.

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim wks As Worksheet
For Each wks In ThisWorkbook.Windows(1).SelectedSheets
...hier folgt die Formatierung
Next wks
Vermutlich werden über die Auswahl in der Userform die Tabellenblätter nicht "selected", ansonsten klappt diese Routine bei Direktdruck prima.
Hier die Routine für die UserForm (mit freundlicher Unterstützung von Hajo)

Private Sub CommandButton1_Click()
Dim LoI As Long
For LoI = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(LoI) Then
Unload Me
Worksheets(ListBox1.List(LoI, 0)).PrintOut , Preview:=vorschau.Value
Next LoI
End Sub

Frage: Wie muss ich nun die Routine "Workbook_BeforePrint" modifiziern, dass die Formatierung sowohl im Direktausdruck, wie auch über das Userform abläuft.
Vielen Dank für Eure Unterstützung.....
und sonnige Grüße aus FFM
Matthias

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nachfrage
13.05.2005 11:30:29
Heiko
Hallo Matthias,
welche bzw. wie viele Sheets druckt EXCEL denn aus wenn du über den Button in deinem Userform druckst ?!
Oder anders gefragt, kannst du das Problem mal genauer beschrieben, (mehr Code, Datei hochladen). Denn eigentlich wird bei .PrintOut das Sheet selected und in der BeforePrint Routine wird es dann auch als selected erkannt und deine Aktion müßte ausgeführt werden.
Gruß Heiko
AW: Nachfrage
13.05.2005 11:50:03
Matthias_FFM
Hallo Heiko,
hier die 1. Routine:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim wks As Worksheet
For Each wks In ThisWorkbook.Windows(1).SelectedSheets
ActiveSheet.PageSetup.RightFooter = "&""Arial,Fett""&6" & ThisWorkbook.Name
ActiveSheet.PageSetup.CenterFooter = ""
ActiveSheet.PageSetup.CenterHeader = ""
If Range("intern!f8") = 1 Then
ActiveSheet.PageSetup.BlackAndWhite = True
Else
ActiveSheet.PageSetup.BlackAndWhite = False
End If
Next wks
Exit Sub
Und hier die Routinen aus dem Userform:
Option Explicit

Private Sub CmMD_Ende_Click()
Unload Me
End Sub


Private Sub CommandButton1_Click()
Dim LoI As Long
Dim MEINDRUCKER
Dim Druckerwahl
MEINDRUCKER = Application.ActivePrinter
If schwarz.Value = True Then ' Auswahl für Schwarz/Weißdruck
Range("Intern!f8") = 0
Else
Range("Intern!f8") = 1
End If
If drucker.Value = True Then 'Druckerauswahl wenn gewünscht..
Druckerwahl = Application.Dialogs(xlDialogPrinterSetup).Show
End If
For LoI = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(LoI) Then
Unload Me
Worksheets(ListBox1.List(LoI, 0)).PrintOut , Preview:=vorschau.Value
End If
Next LoI
Application.ActivePrinter = MEINDRUCKER ' Drucker auf Standard zurücksetzten
Sheets(2).Select
End Sub


Private Sub UserForm_Initialize()
Dim WsTabelle As Worksheet
Application.EnableCancelKey = xlInterrupt
For Each WsTabelle In Sheets
If WsTabelle.Visible = True Then ListBox1.AddItem WsTabelle.Name
Next WsTabelle
End Sub

Seltsam bleibt die Tatsache, dass bei Direktdruck die Formatierungen durchlaufen.
Danke Dir für die weitere Unterstützung.....
Matthias
Anzeige
AW: Nachfrage
13.05.2005 11:59:36
Heiko
Hallo Matthias,
mach mal in dieser Sub aus ALLEN ActiveSheet ein wks !
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim wks As Worksheet

For Each wks In ThisWorkbook.Windows(1).SelectedSheets
ActiveSheet.PageSetup.RightFooter = "&""Arial,Fett""&6" & ThisWorkbook.Name
ActiveSheet.PageSetup.CenterFooter = ""
ActiveSheet.PageSetup.CenterHeader = ""
If Range("intern!f8") = 1 Then
ActiveSheet.PageSetup.BlackAndWhite = True
Else
ActiveSheet.PageSetup.BlackAndWhite = False
End If
Next wks
Exit Sub
Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
keine Lösung
13.05.2005 12:47:03
Matthias_FFm
Hallo Heiko,
leider noch keine Lösung. Bei Druck über Userform erfolgt der Sprung sofort in die Vorschau, ohne die Routine "beforePrint" auszuführen.
Vielleicht doch noch eine Idee ?(kann auch eine Modifikation der Userform-Routine sein...)
Schon jetzt vielen Dank
Matthias
AW: keine Lösung
13.05.2005 12:51:18
Heiko
Hallo Matthias,
alles sehr seltsam, kannst du mal ne Beispielmappe (soweit wie möglich abgespeckt) hochladen ?!
Gruß Heiko
AW: keine Lösung
13.05.2005 13:35:16
Matthias_FFM
Hallo Heiko,
hier die Datei zum hochladen, in abgespeckter(aber funktionsfähiger)Version:
https://www.herber.de/bbs/user/22577.xls
Im Blatt "_Inhalt_" findest Du den Button zum Aufruf Userform (Ausdruck).
Beim direkten Klick auf Seitenvorschau hingegen, wird das Blatt vor Ausdruck formatiert.
Zum Test am besten den Dateinamen ändern, da dieser in der Fußzeile erscheint.
Schönen Dank....
Matthias
Anzeige
AW: keine Lösung
13.05.2005 13:38:33
Matthias_FFM
Hallo Heiko,
ich Dussel habe das Password nicht mitgeteilt: demo
Tschüss
Matthias
AW: keine Lösung
13.05.2005 14:11:28
Heiko
Hallo Matthias,
is mir ehrlich alles ein wenig unübersichtlich um dein Problem nachzuvollziehen.
Deine erste Vermutung das es was damit zu tun hat, das die Sheets bei Ausdruck über das Userform nicht selected sind sehe ich aber genau so.
Aber, da ich das Programm nicht selbst geschrieben habe habe ich keine Idee mehr.
Eine Frage von mir, wie hast du den die graue Schrift "Demoversion" in das Tabellenblatt bekommen.
Gruß Heiko

PS: Rückmeldung wäre nett !
Schade....
13.05.2005 14:30:45
Matthias_FFM
Hallo Heiko,
der Text "DEMOVERSION" ist ein shape welches, je nach "Password" ein oder ausgeblendet wird, d. h. so ein Art Wasserzeichen, danach ein Blattschutz für Objekte einrichten und fertig (geschützt vor dem User) ist die Kiste. Daher kommt auch die Idee vor jedem Ausdruck, egal ob direkt oder über Menu, die Kopf- und Fußzeile zu formatieren.
Im Blatt "Intern" stehen dann die Laufzeiten für die jeweiliegen Passwords. Geht sicherlich professioneller, aber es funktioniert.
Vielleicht hätte ich die Datei noch mehr entmüllen sollen, aber na ja..... trotzdem
vielen Dank für Deine Unterstützung und
schöne Pfingsten......
Matthias aus FFM
Anzeige
Ein Idee noch.
13.05.2005 14:31:29
Heiko
Hallo
eine Idee hätte ich noch, bei mir läuft der Code in dieser Zeile (in BeforePrint)
wks.Shapes("Fonds").Visible = False
in einen Fehler.
Gibt es dieses Shape IN JEDEM Tabellenblatt, wenn nicht dann läuft dein Fehlercode ab, der nach Marke: und da ist ja keine Schleife für alle Sheets sondern es wird nur das aktivSheet bearbeitet.
Gruß Heiko

PS: Rückmeldung wäre nett !
AW: Ein Idee noch.
13.05.2005 14:46:28
Matthias_FFM
Hallo Heiko,
ich hatte schon die Fehlerroutine inaktiviert, um eben auf eventuelle Fehler zu laufen.
Daran liegt es leider auch nicht.
Aber richtig: in den fix eingefügten Tabellen 1 und 2 gibt´s keine shapes, daher Fehlermeldung korrekt.
Und nu.....
Danke nochmals
Matthias
Anzeige
Mal sehen
13.05.2005 15:31:18
Heiko
Hallo Matthias,
ich bin nun schon soweit das ich im Debugger bei Einzelschritt, sehen kann das in beiden Fällen (direkt und userform) der Code im BeforePrint durchlaufen wird.
Nur seltsamerweise werden die Pagesetup Eigenschaften (Kopf- Fusstext ...) nur geändert wenn der Code direkt durchläuft.
Geht man den Weg über das Userform dann wird der Code auch durchlaufen aber die Eigenschaften werden nicht geändert.
Warum ? Ganz großes Fragezeichen.
Finde es aber ein interessantes Problem und werde es weiter verfolgen.
Mal sehen ob wir einen Bug finden oder nur einen Denkfehler bei uns.
Schau hier die nächsten Tage ruhig nochmal rein, werde darüber nochmal nachdenken.
Gruß Heiko
Anzeige
Spitzenklasse
13.05.2005 16:04:47
Matthias_FFM
Hallo Heiko,
ich habe in der Zwischenzeit versucht die Routine im Userform so zu modifizieren, dass keine Vorschau erscheint und es vielleicht daran liegen könnte.
Leider vergebens.
Vielen Dank nochmals......
Matthias
P.S. Prima, dass Dich meine chaotischen Routinen nicht wirklich abgeschreckt haben....
AW: Spitzenklasse
14.05.2005 10:48:50
Heiko
Hallo Matthias,
ich kann das Problem nun ja nachvollziehen, aber warum das so ist ?
Habe dafür weiter oben sogar nen neuen Thread aufgemacht, auch da gab es keine sachdienlichen Hinweise.
Scheint so zu sein das bei .Printout über VBA Code die PageSetup Eingenschaften schreibgeschützt sind.
Da es aber alle nur Vermutungen sind, würde ich als Lösungvorschlag sagen:
Du mußt vor dem Printout Befehl in VBA Code die PageSetup Eigenschaften ändern. Vielleicht schriebst du dir ne eigene Funktion dafür, die du dann dort aufrufst.
Diese Funktion kannst du dann ja auch nochmal in BeforePrint aufrufen, schadet ja nichts.
Damit sollten dann aber in beiden Fällen Kopf- und Fusstext angepaßt sein.
Gruß Heiko
PS: Rückmeldung wäre nett
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige