PDA

Vollständige Version anzeigen : Userform schließen, wenn man von Excel in ein anderes Programm/Fenster wechselt


soweitsogut
27.09.2016, 13:16
Hallo Zusammen,

ich habe ein Userform, in dem ich durch die Einstellung ShowModal = True verhindere, dass eine andere ZEILE angewählt wird, weil ich den Maskeninhalt(meine Userform) stets an die aktive Zeile übergebe.

Problem/Folge aber ist, das ich oft ohne aktives Verlassen der Userform weitere Excel Dateien öffnen muss, was durch die noch aktive Userform aber nicht zugelassen wird.

Gibt es die Möglichkeit meiner Userform beizubringen sich zu schließen, sobald ich in meiner Windowsumgebung ein anderes Fenster (Programm) ansteuere?

Danke und Gruß
soweitsogut

Storax
27.09.2016, 19:34
Und was soll das bringen? Du möchtest eine andere Excel Datei öffnen, hast aber eine Form modal offen. Dann geht das nur, wenn Du eine andere Instanz von Excel startest oder die Form schließt.

Beverly
27.09.2016, 22:21
Hi,

hast du mal versucht, im Workbook_Deactivate-Ereignis das UserForm zu schließen und beim Workbook_Activate das UserForm wieder anzuzeigen?

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

soweitsogut
28.09.2016, 10:42
Hi Storax, was es bringen soll schrieb ich ja. Ich muss andere Excel Dateien öffnen. Manchmal wegen einer SAP Tabellendarstellung, oft einfach weil weitere Daten aus anderen Datein nötig sind. Beim Klick auf eine Excel aus dem Windows Explorer weiß ich mitunter ja gar nicht mehr das ich eigentlich noch das Userform offen habe, denn es schließt sich ja leider nicht automatisch sobald ich zu anderen Daten wechsel. Warum ist also ziemlich eindeutig.

Wenn das nicht geht. Dann muss ich eben von der derzeitigen Umsetzung mit ShowModal = True Abstand nehmen.

@Beverly: Danke für den Tipp. Habs probiert. Das Ereignis wird im ShowModal = True Modus leider nicht ausgeführt, solange das Fenster nicht geschlossen wurde.

Soweitsogut

Storax
28.09.2016, 11:51
Die Activate und Deactivate Events werden nur abgefeuert, wenn man innerhalb von Excel die Mappe wechselt, was aber nicht geht, da eine Userform aktiv ist.
Was Du machen musst: Schreib Dir ein Programm (VB.NET), welches prüft ob Deine Userform offen ist und ob Excel/Userform den Fokus hat. Falls nicht, schließt Du die Form. Das dürfte mit Win API Aufrufen umsetzbar sein. Aber vielleicht bin ich gerade betriebsblind und es gibt eine einfachere Möglichkeit ...

Beverly
28.09.2016, 12:26
Hi,

dann setze doch die Eigenschaft ShowModal auf False und schreibe beim Starten des UserForms die aktuelle Zeile in die Tag-Eigenschaft des UserForms, dann kannst du beim Übertragen deiner Daten ins Tabellenblatt auf diese Zeile zugreifen - es spielt dann keine Rolle, in welche Zelle der Benutzer den Cursor inzwischen gesetzt hat.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

soweitsogut
30.09.2016, 10:51
Hi,

da sollte ich also wirklich lieber von der Umsetzung ShowModal = True Abstand nehmen und mir die DatenZeile z.B. wie von Beverly vorgeschlagen ins Userform "einbrennen". :-)

Danke und Gruß
soweitsogut