Discussion:
VBA: Hauptfenster minimieren?
(zu alt für eine Antwort)
km66
2006-11-07 10:43:57 UTC
Permalink
Hallo NG,

gibt es eine Möglichkeit, während der Ausführung einer UserForm das
Excel-Hauptfenster zu minimieren (ich möchte, daß beim Aufruf der
Excel-Datei nur die Userform sichtbar ist)?

Vielen Dank für jede Hilfe.

Gruß, Klaus
Wolfgang Habernoll
2006-11-07 11:31:08 UTC
Permalink
Hallo Klaus
Post by km66
Hallo NG,
gibt es eine Möglichkeit, während der Ausführung einer UserForm das
Excel-Hauptfenster zu minimieren (ich möchte, daß beim Aufruf der
Excel-Datei nur die Userform sichtbar ist)?
Vielen Dank für jede Hilfe.
Gruß, Klaus
ausschalten könntest du es in der UserForm_Initialize mit

Private Sub UserForm_Initialize()
Application.Visible = False
End Sub

aber vergiss nicht es auch an geeigneter Stelle mal wieder einzuschalten

mfG
Wolfgang Habernoll
Wolfgang Schirmer
2006-11-07 11:33:17 UTC
Permalink
Hallo km66 (Klaus),
^^^^
hier sollte Dein Realname stehen. Sieht besser aus und fördert
eventuell mehr Antworten ;-)
Post by km66
Hallo NG,
gibt es eine Möglichkeit, während der Ausführung einer UserForm das
Excel-Hauptfenster zu minimieren (ich möchte, daß beim Aufruf der
Excel-Datei nur die Userform sichtbar ist)?
Unter diese Arbeitsmappe bitte folgendes eingeben:

Private Sub Workbook_Open()

Application.Visible = False
UserForm1.Show

End Sub

Bei mir funktioniert es so :-)
Post by km66
Vielen Dank für jede Hilfe.
Bitteschön
Post by km66
Gruß, Klaus
mfG Wolfgang
Klaus Maisch
2006-11-07 13:49:38 UTC
Permalink
Danke Wolfgang Schirmer, danke Wolfgang Habernoll,

euren Vorschlag habe ich ausprobiert. Zunächst funktioniert alles wie
gewünscht.
Nur rufe ich an einer Stelle der UserForm die Druckvorschau
(Seitenansicht) von Excel auf. Und dann hängt sich das Programm
(Sanduhr) . Gibt es vielleicht eine Möglichkeit, das Hauptfenster
lediglich zu minimieren, statt völlig verschwinden zu lassen?

Gruß, Klaus
Post by Wolfgang Schirmer
Hallo km66 (Klaus),
^^^^
hier sollte Dein Realname stehen. Sieht besser aus und fördert
eventuell mehr Antworten ;-)
Post by km66
Hallo NG,
gibt es eine Möglichkeit, während der Ausführung einer UserForm das
Excel-Hauptfenster zu minimieren (ich möchte, daß beim Aufruf der
Excel-Datei nur die Userform sichtbar ist)?
Private Sub Workbook_Open()
Application.Visible = False
UserForm1.Show
End Sub
Bei mir funktioniert es so :-)
Post by km66
Vielen Dank für jede Hilfe.
Bitteschön
Post by km66
Gruß, Klaus
mfG Wolfgang
Melanie Breden
2006-11-07 17:07:01 UTC
Permalink
Hallo Klaus,
Post by Klaus Maisch
Nur rufe ich an einer Stelle der UserForm die Druckvorschau
(Seitenansicht) von Excel auf. Und dann hängt sich das Programm
(Sanduhr) . Gibt es vielleicht eine Möglichkeit, das Hauptfenster
lediglich zu minimieren, statt völlig verschwinden zu lassen?
verwende die WindowState-Eigenschat:

Application.WindowState = xlMinimized



Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -
Microsoft Excel - Die ExpertenTipps http://tinyurl.com/cmned
Das Excel-VBA Codebook http://excel.codebooks.de
Excel-Auftragsprogrammierung
Klaus Maisch
2006-11-07 18:58:04 UTC
Permalink
Danke Melanie,

leider funktioniert das nicht so wie ich mir das vorstelle.
Wenn ich folgendes probiere...

Private Sub workbook_open()
Application.WindowState = xlMinimized
UserForm1.Show
End Sub

dann startet das Hauptfenster zwar minimiert aber mit ihm leider auch
meine Userform.

Und wenn ich die Application-Zeile hinter den Aufruf der Userform
stelle...

Private Sub workbook_open()
UserForm1.Show
Application.WindowState = xlMinimized
End Sub

bleibt das Hauptfenster offen (also so wie gehabt).

Schließlich hab ich die Zeile aus workbook_open() herausgenommen und
hinter den Aufruf von UserForm_Initialize() gesetzt....

Private Sub UserForm_Initialize()
Application.WindowState = xlMinimized
.....

Dann wird wie oben das Hauptfenster und mit ihm auch die Userform
minmiert.
Hast Du noch eine Idee?

Gruß, Klaus
Post by Melanie Breden
Hallo Klaus,
Post by Klaus Maisch
Nur rufe ich an einer Stelle der UserForm die Druckvorschau
(Seitenansicht) von Excel auf. Und dann hängt sich das Programm
(Sanduhr) . Gibt es vielleicht eine Möglichkeit, das Hauptfenster
lediglich zu minimieren, statt völlig verschwinden zu lassen?
Application.WindowState = xlMinimized
Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -
Microsoft Excel - Die ExpertenTipps http://tinyurl.com/cmned
Das Excel-VBA Codebook http://excel.codebooks.de
Excel-Auftragsprogrammierung
Melanie Breden
2006-11-07 19:43:30 UTC
Permalink
Hallo Klaus,
Post by Klaus Maisch
leider funktioniert das nicht so wie ich mir das vorstelle.
Schließlich hab ich die Zeile aus workbook_open() herausgenommen und
hinter den Aufruf von UserForm_Initialize() gesetzt....
Hast Du noch eine Idee?
bei mir funzt unter Excel2003 Folgendes:

'Diese Arbeitsmappe
Private Sub Workbook_Open()
UserForm1.Show
End Sub

' Klassenmodul UserForm
Private Sub UserForm_Initialize()
Application.WindowState = xlMinimized
AppActivate "Microsoft Excel"
End Sub

Private Sub UserForm_Terminate()
Application.WindowState = xlNormal
End Sub


Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -
Microsoft Excel - Die ExpertenTipps http://tinyurl.com/cmned
Das Excel-VBA Codebook http://excel.codebooks.de
Excel-Auftragsprogrammierung
Klaus Maisch
2006-11-08 06:56:41 UTC
Permalink
Hallo Melanie,

Dein Vorschlag...

Private Sub UserForm_Initialize()
Application.WindowState = xlMinimized
AppActivate "Microsoft Excel"
......

funktioniert wunderbar, bis ich von der UserForm aus die Seitenansicht
von Excel aufrufe...

Private Sub CommandButton3_Click()
'Druckvorschau
'' Eingabekontrolle
Eingabekontrolle_durchführen

If (eingabe_ok = True) Then
MsgBox "1"
daten_in_datenblatt_schreiben
MsgBox "2"
ThisWorkbook.Sheets("Diagramm").Select
MsgBox "3"
UserForm1.Hide
MsgBox "4"
ActiveWindow.SelectedSheets.PrintPreview
MsgBox "5"
UserForm1.Show
Application.WindowState = xlMinimized
End If
End Sub

Und zwar läuft das ganze bis einschließlich ...MsgBox "4".
Anschließend hängt das Programm. Ich vermute also, bei dem Aufruf
ActiveWindow.SelectedSheets.PrintPreview liegt der Hund begraben.
Alternativ habe ich schon probiert....
ThisWorkbook.Sheets("Diagramm").PrintPreview
Leider mit demselben Ergebnis.

Vielleicht verlange ich einfach zuviel...

Gruß, Klaus
Post by Melanie Breden
Hallo Klaus,
Post by Klaus Maisch
leider funktioniert das nicht so wie ich mir das vorstelle.
Schließlich hab ich die Zeile aus workbook_open() herausgenommen und
hinter den Aufruf von UserForm_Initialize() gesetzt....
Hast Du noch eine Idee?
'Diese Arbeitsmappe
Private Sub Workbook_Open()
UserForm1.Show
End Sub
' Klassenmodul UserForm
Private Sub UserForm_Initialize()
Application.WindowState = xlMinimized
AppActivate "Microsoft Excel"
End Sub
Private Sub UserForm_Terminate()
Application.WindowState = xlNormal
End Sub
Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -
Microsoft Excel - Die ExpertenTipps http://tinyurl.com/cmned
Das Excel-VBA Codebook http://excel.codebooks.de
Excel-Auftragsprogrammierung
Melanie Breden
2006-11-08 07:49:22 UTC
Permalink
Hallo Klaus,
Post by Wolfgang Habernoll
Private Sub UserForm_Initialize()
Application.WindowState = xlMinimized
AppActivate "Microsoft Excel"
......
funktioniert wunderbar, bis ich von der UserForm aus die Seitenansicht
von Excel aufrufe...
Und zwar läuft das ganze bis einschließlich ...MsgBox "4".
Anschließend hängt das Programm. Ich vermute also, bei dem Aufruf
ActiveWindow.SelectedSheets.PrintPreview liegt der Hund begraben.
Alternativ habe ich schon probiert....
ThisWorkbook.Sheets("Diagramm").PrintPreview
Leider mit demselben Ergebnis.
Vielleicht verlange ich einfach zuviel...
du wohl eher nicht, aber Excel verlangt vor dem Aufruf der Seitenansicht ein sichtbares Fenster:

If eingabe_ok = True Then
With Application
.ScreenUpdating = False
Me.Hide

.WindowState = xlNormal
ThisWorkbook.Sheets("Diagramm").PrintPreview
.WindowState = xlMinimized

Me.Show
.ScreenUpdating = True
End With
End If


Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -
Microsoft Excel - Die ExpertenTipps http://tinyurl.com/cmned
Das Excel-VBA Codebook http://excel.codebooks.de
Excel-Auftragsprogrammierung
Klaus Maisch
2006-11-08 10:44:06 UTC
Permalink
Hallo Melanie,

danke, Du hast mich einen Schritt weitergebracht. Die Seitenansicht
wird aufgerufen, das Programm hängt sich nicht auf. Allerdings ist
nach dem Schließen der Seitenansicht die Userform minimiert (blinkende
Excel-Schaltfläche auf der Taskleiste). Nach Anklicken der
Schaltfläche bleibt das Excel-Hauptfenster wie gewünscht minimiert
und die Userform erscheint. Schön wäre es, wenn die Userform nach dem
Schließen der Seitenansicht sofort zu sehen wäre.

Gruß, Klaus
Post by Melanie Breden
Hallo Klaus,
Post by Wolfgang Habernoll
Private Sub UserForm_Initialize()
Application.WindowState = xlMinimized
AppActivate "Microsoft Excel"
......
funktioniert wunderbar, bis ich von der UserForm aus die Seitenansicht
von Excel aufrufe...
Und zwar läuft das ganze bis einschließlich ...MsgBox "4".
Anschließend hängt das Programm. Ich vermute also, bei dem Aufruf
ActiveWindow.SelectedSheets.PrintPreview liegt der Hund begraben.
Alternativ habe ich schon probiert....
ThisWorkbook.Sheets("Diagramm").PrintPreview
Leider mit demselben Ergebnis.
Vielleicht verlange ich einfach zuviel...
If eingabe_ok = True Then
With Application
.ScreenUpdating = False
Me.Hide
.WindowState = xlNormal
ThisWorkbook.Sheets("Diagramm").PrintPreview
.WindowState = xlMinimized
Me.Show
.ScreenUpdating = True
End With
End If
Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -
Microsoft Excel - Die ExpertenTipps http://tinyurl.com/cmned
Das Excel-VBA Codebook http://excel.codebooks.de
Excel-Auftragsprogrammierung
Melanie Breden
2006-11-08 10:51:03 UTC
Permalink
Hallo Klaus,
Post by Klaus Maisch
danke, Du hast mich einen Schritt weitergebracht. Die Seitenansicht
wird aufgerufen, das Programm hängt sich nicht auf. Allerdings ist
nach dem Schließen der Seitenansicht die Userform minimiert (blinkende
Excel-Schaltfläche auf der Taskleiste). Nach Anklicken der
Schaltfläche bleibt das Excel-Hauptfenster wie gewünscht minimiert
und die Userform erscheint. Schön wäre es, wenn die Userform nach dem
Schließen der Seitenansicht sofort zu sehen wäre.
das Verhalten kann ich unter Excel 2003 nicht bestätigen.
Welche Excel Version verwendest du?

Evtl. hilft es, wenn du nach der Anzeige der UserForm wieder die
AppActivate-Anweisung einsetzt:

Me.Show
AppActivate "Microsoft Excel"


Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -
Microsoft Excel - Die ExpertenTipps http://tinyurl.com/cmned
Das Excel-VBA Codebook http://excel.codebooks.de
Excel-Auftragsprogrammierung
Klaus Maisch
2006-11-08 14:34:05 UTC
Permalink
Hallo Melanie,

danke, aber auch mit der zusätzlichen Zeile funktioniert es nicht.
Excel ist minimiert und blinkt in der Taskleiste. Ich verwende Excel
2003 (11.5612.6568) und Microsoft Windows XP Professional, Version
5.1.2600 Service Pack 2 Build 2600.

Hier noch mal der Code:

**************************************************
' Diese Arbeitsmappe
Private Sub workbook_open()
UserForm1.Show
End Sub

Private Sub UserForm_Initialize()
Application.WindowState = xlMinimized
AppActivate "Microsoft Excel"
Daten_in_die_Textfelder_einlesen '' Daten werden aus dem Excelblatt
...Daten... eingelesen
DatenGespeichert = False

' Cursor in Textfeld1
UserForm1.TextBox1001.SelStart = 0
End Sub


Private Sub CommandButton3_Click()
'Druckvorschau
'Eingabekontrolle
Eingabekontrolle_durchführen

If eingabe_ok = True Then
daten_in_datenblatt_schreiben
With Application
.ScreenUpdating = False
Me.Hide

.WindowState = xlNormal
ThisWorkbook.Sheets("Diagramm").PrintPreview
.WindowState = xlMinimized

Me.Show
AppActivate "Microsoft Excel"
.ScreenUpdating = True
End With
End If
End Sub

Private Sub UserForm_Terminate()
Application.WindowState = xlNormal
End Sub

**************************************************

Du hast in einem Deiner Beiträge geschrieben... 'KLASSENmodul
UserForm.... Hat das eine besondere Bedeutung?
Ich habe die Userform ganz gewöhnlich unter ...Formulare eingefügt.
Muß ich dabei vielleicht etwas besonderes tun?

Gruß, Klaus
Post by Melanie Breden
Hallo Klaus,
Post by Klaus Maisch
danke, Du hast mich einen Schritt weitergebracht. Die Seitenansicht
wird aufgerufen, das Programm hängt sich nicht auf. Allerdings ist
nach dem Schließen der Seitenansicht die Userform minimiert (blinkende
Excel-Schaltfläche auf der Taskleiste). Nach Anklicken der
Schaltfläche bleibt das Excel-Hauptfenster wie gewünscht minimiert
und die Userform erscheint. Schön wäre es, wenn die Userform nach dem
Schließen der Seitenansicht sofort zu sehen wäre.
das Verhalten kann ich unter Excel 2003 nicht bestätigen.
Welche Excel Version verwendest du?
Evtl. hilft es, wenn du nach der Anzeige der UserForm wieder die
Me.Show
AppActivate "Microsoft Excel"
Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -
Microsoft Excel - Die ExpertenTipps http://tinyurl.com/cmned
Das Excel-VBA Codebook http://excel.codebooks.de
Excel-Auftragsprogrammierung
Melanie Breden
2006-11-09 07:16:16 UTC
Permalink
Hallo Klaus,
Post by Klaus Maisch
Post by Melanie Breden
Evtl. hilft es, wenn du nach der Anzeige der UserForm wieder die
Me.Show
AppActivate "Microsoft Excel"
danke, aber auch mit der zusätzlichen Zeile funktioniert es nicht.
Excel ist minimiert und blinkt in der Taskleiste.
ich habe noch etwas rumexperimentiert und Folgendes herausgefunden:

Die obige Reihenfolge funktioniert tadellos, wenn der VBA Editor geöffnet ist.
Wenn du die Reihenfolge umdrehst, funzt es auch ohne VBA Editor:

If eingabe_ok = True Then
With Application
.ScreenUpdating = False
Me.Hide

.WindowState = xlNormal
ThisWorkbook.Worksheets("Diagramm").PrintPreview
.WindowState = xlMinimized

AppActivate "Microsoft Excel"
Me.Show
.ScreenUpdating = True
End With
End If
Post by Klaus Maisch
Du hast in einem Deiner Beiträge geschrieben... 'KLASSENmodul
UserForm.... Hat das eine besondere Bedeutung?
Ich habe die Userform ganz gewöhnlich unter ...Formulare eingefügt.
Muß ich dabei vielleicht etwas besonderes tun?
Formulare gehören zu den Klassenmodulen.Ich habe sie nur explizit so genannt
um zu verdeutlichen, dass der Code nicht in einem normalen Standardmodul
hinterlegt wird.


Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -
Microsoft Excel - Die ExpertenTipps http://tinyurl.com/cmned
Das Excel-VBA Codebook http://excel.codebooks.de
Excel-Auftragsprogrammierung
Klaus Maisch
2006-11-09 09:33:33 UTC
Permalink
Vielen Dank Melanie,

das war die Lösung!

Einen ganz herzlichen Gruß schickt Dir,
Klaus
Post by Melanie Breden
Hallo Klaus,
Post by Klaus Maisch
Post by Melanie Breden
Evtl. hilft es, wenn du nach der Anzeige der UserForm wieder die
Me.Show
AppActivate "Microsoft Excel"
danke, aber auch mit der zusätzlichen Zeile funktioniert es nicht.
Excel ist minimiert und blinkt in der Taskleiste.
Die obige Reihenfolge funktioniert tadellos, wenn der VBA Editor geöffnet ist.
If eingabe_ok = True Then
With Application
.ScreenUpdating = False
Me.Hide
.WindowState = xlNormal
ThisWorkbook.Worksheets("Diagramm").PrintPreview
.WindowState = xlMinimized
AppActivate "Microsoft Excel"
Me.Show
.ScreenUpdating = True
End With
End If
Post by Klaus Maisch
Du hast in einem Deiner Beiträge geschrieben... 'KLASSENmodul
UserForm.... Hat das eine besondere Bedeutung?
Ich habe die Userform ganz gewöhnlich unter ...Formulare eingefügt.
Muß ich dabei vielleicht etwas besonderes tun?
Formulare gehören zu den Klassenmodulen.Ich habe sie nur explizit so genannt
um zu verdeutlichen, dass der Code nicht in einem normalen Standardmodul
hinterlegt wird.
Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -
Microsoft Excel - Die ExpertenTipps http://tinyurl.com/cmned
Das Excel-VBA Codebook http://excel.codebooks.de
Excel-Auftragsprogrammierung
Melanie Breden
2006-11-09 10:05:43 UTC
Permalink
Hallo Klaus,
Post by Klaus Maisch
das war die Lösung!
freut mich, dass wir endlich die Lösung gefunden haben :-)


Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -
Microsoft Excel - Die ExpertenTipps http://tinyurl.com/cmned
Das Excel-VBA Codebook http://excel.codebooks.de
Excel-Auftragsprogrammierung
unknown
2006-11-07 21:53:26 UTC
Permalink
Hallo Klaus,
mit der Anweisung: Application.Visible = False
Aber Vorsicht: Du musst während der Testphase und bei auftretenden
Fehlern immer wieder zum VBE zurückkehren können, also entsprechenden
Maßnahmen treffen.

MfG Frank
_________________________________________________
Frank Arendt-Theilen (ehem. MVP für Excel), Hameln
Microsoft Excel - Die ExpertenTipps: tinyurl.com/cmned
Website: xl-faq.de
Loading...