Registriert seit: 20.03.2023
Version(en): Office 2013
Hallo zusammen,ich habe da auch noch ein Problem mit Excel 2013.Ich habe ein Sehr großes Programm in Excel 2010 geschrieben was auch wunderbar funktioniert aber jetzt mit 2013 eben nicht mehr: Das Problem ist, das ich über mehrere UserFormen Dateien öffne die dann auch geöffnet werden aber die UserForm nur in der ersten Datei aktiv und sichtbar ist die bereits vor dem öffnen der neuen Datei offen war. Wie kann ich eine Datei öffnen und die UserForm da zur Weiterverarbeitung aktivieren ??Beispiel: Ich habe eine Datei offen die „Book1“ heißt.Wenn ich jetzt über eine UserForm eine Datei öffne z.B. „specimenNeu.xlsx“ wird die Datei geöffnet aber die UserForm ist weg. Wenn ich auf „Book1“ klicke ist die UserForm da aktiv und sichtbar. Ich brauche die UserForm aber in der Datei „specimenNeu.xlsx“.Ich hoffe das ich mein Problem beschreiben konnte?Vielen Dank und viele Grüße,Gerd
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Moin! Das Fenstermanagement hat sich mit Excel 2013 grundsätzlich geändert! Google mal nach SDI
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 22.11.2019
Version(en): 365
Hallo, setze doch die UF allwaysontop, das heißt, dass sie immer im Vordergrund ist, egal was man gerade aktiviert hat. Vielleicht hilft es... Code:
Private Declare PtrSafe Function FindWindowA Lib "user32" ( _ ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr Private Declare PtrSafe Function SetWindowPos Lib "user32" ( _ ByVal Hwnd As LongPtr, ByVal hWndInsertAfter As LongPtr, _ ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, _ ByVal wFlags As Long) As Long Private Const HWND_TOPMOST = -1
Private Sub UserForm_Activate() SetWindowPos FindWindowA("ThunderDFrame", Me.Caption), HWND_TOPMOST, 0, 0, 0, 0, &H3 End Sub
_________ viele Grüße Karl-Heinz
Registriert seit: 20.03.2023
Version(en): Office 2013
21.03.2023, 12:28
(Dieser Beitrag wurde zuletzt bearbeitet: 21.03.2023, 12:39 von DNGerhard.)
Hallo Ralf,ich weiß das MS das Multiple Document Interface (MDI) durch das Single Document Interface (SDI) ersetzt hat.Aber wie kann ich weiterhin mit meinem Programm arbeiten und die UserForm wieder in den neu geöffneten Dateien wieder aktivieren?VGGerd
(21.03.2023, 12:20)volti schrieb: Hallo, setze doch die UF allwaysontop, das heißt, dass sie immer im Vordergrund ist, egal was man gerade aktiviert hat. Vielleicht hilft es...
Hallo Karl-Heinz, vielen Dank. Aber... wenn ich die Private Declare PtrSafe Function einstelle kommen Fehlermeldungen und ich kann die UserForm nicht mehr starten. Die Fehlermeldungen bezieht sich auf das Argument "FindWindowA" und "SetWindowPos"
Registriert seit: 20.03.2023
Version(en): Office 2013
Oder wie kann man Excel2013 wieder zu einem Multiple Document Interface (MDI) machen???
VG Gerd
Registriert seit: 22.11.2019
Version(en): 365
Hallo, dieser Code ist jetzt für 32 und 64 Bit..... Ansonsten die Declares als Public, also nicht Private in ein Modul setzen. Code:
#If Win64 Then Private Declare PtrSafe Function FindWindowA Lib "user32" ( _ ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr Private Declare PtrSafe Function SetWindowPos Lib "user32" ( _ ByVal Hwnd As LongPtr, ByVal hWndInsertAfter As LongPtr, _ ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, _ ByVal wFlags As Long) As Long #Else Private Declare Function FindWindowA Lib "user32" ( _ ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function SetWindowPos Lib "user32" ( _ ByVal Hwnd As Long, ByVal hWndInsertAfter As Long, _ ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, _ ByVal wFlags As Long) As Long #End If
Private Const HWND_TOPMOST = -1
Private Sub UserForm_Activate() SetWindowPos FindWindowA("ThunderDFrame", Me.Caption), HWND_TOPMOST, 0, 0, 0, 0, &H3 End Sub
_________ viele Grüße Karl-Heinz
Registriert seit: 20.03.2023
Version(en): Office 2013
21.03.2023, 16:22
(Dieser Beitrag wurde zuletzt bearbeitet: 21.03.2023, 17:28 von WillWissen.
Bearbeitungsgrund: Antwort aus Zitat herausgenommen
)
(21.03.2023, 13:30)volti schrieb: Hallo, dieser Code ist jetzt für 32 und 64 Bit..... Ansonsten die Declares als Public, also nicht Private in ein Modul setzen. Hallo Karl-Heinz, vielen Dank. Aber... Die UserForm ist jetzt im Vordergrund. Sobald ich einen neue Datei öffne und auf die UserForm für die nächste Bearbeitung Klicke wird wieder "Book1" aktiviert. Das ist zum Haare raufen. VG Gerd
Registriert seit: 29.09.2015
Version(en): 2030,5
22.03.2023, 10:33
(Dieser Beitrag wurde zuletzt bearbeitet: 22.03.2023, 10:33 von snb.)
Ein userform kann jede geöffnete Datei bearbeiten. Welche Datei 'aktiv' ist spielt keine Rolle. ändere 'activeworkbook' in Workobooks("Name"), workbooks("Name").etc.
Registriert seit: 20.03.2023
Version(en): Office 2013
22.03.2023, 11:58
(Dieser Beitrag wurde zuletzt bearbeitet: 22.03.2023, 12:16 von WillWissen.
Bearbeitungsgrund: Unnötiges Zitat entfernt-Antwort aus Zitat herausgenommen
)
Hallo snb, es funktioniert. Ist zwar nicht schön, aber damit kann ich leben. Vielen Dank an alle die mir geholfen haben.
Viele Grüße, Gerd
|