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

Problem mit Userform

Problem mit Userform
15.04.2016 16:17:23
Peter
Hallo Excelspezialisten,
ich habe ein bestehendes Programm seit mindestens zwei Jahren. Dieses Programm ist
sehr umfangreich. Es besteht aus mehreren Userforms und 70 Tabellen.
Bis heute lief das Programm einwandfrei. Jetzt taucht folgendes Problem auf. In einer UF befinden sich zwei Listboxes. Mittels Klick in Listbox1 wird eine Textbox gefüllt.
Beim Wechsel wird die Listbox2 gefüllt.
Sub Textbox_OnExit2()
If TextBox5.Value = "11" Then Call UserForm_Initialize_11 usw....
End Sub Das Ansehen der diversen Konten macht keinerlei Probleme.
Wird jedoch die ausgewählte Zeile gedruckt, tauchen folgende Probleme auf:
Der Ausdruck wird ausgeführt. Auch hier verwende ich folgendes Makro:
Private Sub CommandButton2_Click()
UserForm1_Einzelkonto.Hide
Textbox_OnExit3
End Sub
Sub Textbox_OnExit3()
If TextBox5.Value = "11" Then Call Drucken_11 usw. ...
End Sub Der Druckauftrag wird ausgeführt und die Userform wieder geöffnet.
Das Schliessen der UF mit Öffnen der anderen UF:
Private Sub CommandButton1_Click()
Unload UserForm1_Einzelkonto
UserForm_Auswahl.Show
End Sub
funktioniert. Wird jedoch dann die zweite UF geschlossen mit Makro:
Private Sub CommandButton3_Click()
Blattschutz
Sheets("10").Select
Unload Me
End Sub
öffnet sich die UserForm1_Einzelkonto wieder und der vorherige Druckauftrag wird
erneut ausgeführt. D. h. die UF_Auswahl kann nicht geschlossen werden.
Weiteres Problem auf anderem Rechner in diesem Zusammenhang, dass mit jedem Drucken
die zweite Listbox immer grösser wird, bis die darunter befindliche Zeile verdeckt
ist.
Weiss mir hier jemand einen Rat?
Ich vermute, dass das Problem mit irgend einem Update in Verbindung steht, da dieses
Problem zuvor nicht aufgetreten war.
Vielleicht besteht auch die Möglichkeit, den Ausdruck mit einer anderen Variante als Textbox OnExit zu lösen, das die ohnehin extrem lange dauert.
Besten Dank für Eure Hilfe.
Gruss Peter

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit Userform
15.04.2016 18:17:30
Herbert
Hallo Peter,
lade doch mal eine Beispiel-Datei hoch.
Servus

AW: Problem mit Userform
15.04.2016 20:06:26
Peter
Hallo Herbert,
genau das ist auch ein Problem.
Die Datei ist extrem umfangreich und enthält vertrauliche Daten.
Einen Teil konnte ich bereits richten. Ich starte das Drucken jetzt direkt aus der UF mittels Button ohne die UF zu schliessen. Dadurch ist der Fehler mit der zweiten UF erledigt. Dass der Druckverlauf
viel zu lange dauert, habe ich jetzt getestet und das dürfte wohl an den Headers und Footers liegen.
Wenn ich das Makro im Einzelschritt durchführe zeigt es sich ganz deutlich, dass dort der Fehler liegt.
Ich benutze Office 2013 Excelversion 2010 was offenbar einen anderen Code erfordert.
Sub Drucken_11_1()
Sheets("11").Select
ActiveSheet.PageSetup.PrintArea = ""                                'Druckbereich aufheben
SpalteA = Range("A65536").End(xlUp).Row                                 'SpalteA ist der  _
Massstab für das berechnen der letzten beschriebenene Zelle in Spalte A
ActiveSheet.PageSetup.PrintArea = _
Range("A1:I" & SpalteA).Address
'ActiveSheet.PageSetup.Orientation = xlLandscape
Dim wks As Worksheet, lView As Long, oSheet As Object
Set oSheet = ActiveSheet
Set wks = Sheets("11")
Application.ScreenUpdating = False
With wks
.Activate
lView = Application.ActiveWindow.View
.ResetAllPageBreaks 'Alle vorhandenen festen Seitenwechsel löschen
With .PageSetup
.LeftHeader = "&""Arial,Standard""&10&BEinzelkonto  " '& Format(Sheets("Kontosalden").Range( _
"D04"))
.CenterHeader = "&""Arial,Standard""&10&BStand   " & Format(Sheets("Kontosalden").Range("A1" _
), "dd.mm.yyyy")
'.PrintArea = "$A$1:$N$132"                                       'nicht erforderlich da  _
Makro DruckbereichFestlegen eingefügt
.Zoom = 78
'Do Until wks.VPageBreaks.Count = 0 Or .Zoom 

Kennst Du dich hier aus?
Besten Dank.
Gruss Peter

Anzeige
AW: Problem mit Userform
16.04.2016 06:31:46
Peter
Hallo Herbert,
genau das ist auch ein Problem.
Die Datei ist extrem umfangreich und enthält vertrauliche Daten.
Einen Teil konnte ich bereits richten. Ich starte das Drucken jetzt direkt aus der UF mittels Button ohne die UF zu schliessen. Dadurch ist der Fehler mit der zweiten UF erledigt. Dass der Druckverlauf
viel zu lange dauert, habe ich jetzt getestet und das dürfte wohl an den Headers und Footers liegen.
Wenn ich das Makro im Einzelschritt durchführe zeigt es sich ganz deutlich, dass dort der Fehler liegt.
Ich benutze Office 2013 Excelversion 2010 was offenbar einen anderen Code erfordert.
Sub Drucken_11_1()
Sheets("11").Select
ActiveSheet.PageSetup.PrintArea = ""                                'Druckbereich aufheben
SpalteA = Range("A65536").End(xlUp).Row                                 'SpalteA ist der  _
Massstab für das berechnen der letzten beschriebenene Zelle in Spalte A
ActiveSheet.PageSetup.PrintArea = _
Range("A1:I" & SpalteA).Address
'ActiveSheet.PageSetup.Orientation = xlLandscape
Dim wks As Worksheet, lView As Long, oSheet As Object
Set oSheet = ActiveSheet
Set wks = Sheets("11")
Application.ScreenUpdating = False
With wks
.Activate
lView = Application.ActiveWindow.View
.ResetAllPageBreaks 'Alle vorhandenen festen Seitenwechsel löschen
With .PageSetup
.LeftHeader = "&""Arial,Standard""&10&BEinzelkonto  " '& Format(Sheets("Kontosalden").Range( _
"D04"))
.CenterHeader = "&""Arial,Standard""&10&BStand   " & Format(Sheets("Kontosalden").Range("A1" _
), "dd.mm.yyyy")
'.PrintArea = "$A$1:$N$132"                                       'nicht erforderlich da  _
Makro DruckbereichFestlegen eingefügt
.Zoom = 78
'Do Until wks.VPageBreaks.Count = 0 Or .Zoom 

Kennst Du dich hier aus?
Besten Dank.
Gruss Peter

Anzeige
AW: Problem mit Userform
18.04.2016 20:04:36
Michael
Hi Peter,
Herbert kennt sich sicher aus, hat aber vermutlich genauso wenig Lust wie ich, sich durch dieses Code-Chaos zu wühlen.
Kritik ist natürlich nur bedingt angebracht bei "Basiskenntnissen"...
Aber was Du mal tun kannst, ist ...
a) direkt zwischen der ersten und zweiten Zeile ein stop einzufügen, dann wird die Abarbeitung des Codes unterbrochen, und Du hast die Möglichkeit, ihn mit der F8-Taste zeilenweise durchzugehen und zu beobachten, was passiert.
b) den Code aufräumen: alle Variablendeklarationen an den Anfang, Kommentare in Extra-Zeilen, überlange Zeilen händisch mit "_" trennen.
c) zusammenhängende Codeteile einrücken, also statt
With
Dies
und
das
End With

lieber
With
Dies
und
das
End With
d) die allererste Zeile eines Moduls sollte immer

option explicit
sein, dann bist Du gezwungen, alle Variablen sauber zu deklarieren: z.B. fehlt "SpalteA".
Die unterste Zeile ermittelst Du besser mit

SpalteA = Range("A" & rows.count).End(xlUp).Row 
, das paßt bei allen Excel-Versionen.
In Deinem Code weist Du der Variablen "oSheet" (die ist als Objekt definiert, aber ein Worksheet tut es auch, genau wie bei "wks") zu:
  Set oSheet = ActiveSheet
Set wks = Sheets("11")
ABER: in der allerersten, vorhandenen Codezeile steht:
Sheets("11").Select

so daß BEIDE Variablen sich auf das gleiche Blatt beziehen - sinnlos.
Lies doch bitte u.a. mal: http://xlfaq.herber.de/xlBasics/main_sel.htm
dann mag Dir einiges klarer werden.
Wenn Du etwas "aufgeräumt" hast, kannste ja den Code nochmal hochladen.
Schöne Grüße,
Michael
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige