Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel Fenster aktivieren bei mousover!
#1
Hallo Profis,

ein gutes neues Jahr 2022.

Ich bin neue, vielleicht bin ich hier falsch, aber ich versuche es trotzdem:
Ich Arbeite mit zwei Fenster nebeneinander Chrome (linke Seite) und Excel (rechte Seite).
Über verschieden Buttons kann ich über Excel in Chrome navigieren, Message senden, mehrere Tabs gleichzeitig öffnen und Schließen usw., das geht über Koordinate, Mausposition und Tastenkombination.

Ich klicke z.B. recht im Excel ein Button und ein Text wird in Chrome eingefügt, oder ein Tab wird geschlossen usw...
Das Problem: Das Excel Fenster wird nicht automatisch aktiviert bei mousover, wenn ich in Chrome was anklicke, ist Excel nicht mehr aktiv, das heißt wenn ich jetzt mit dem Maus ein Button klicke (rechte Seite, Excel) passiert erstmal gar nicht da der erste klick das Fenster aktiviert, erst ab den zweiten Klick wird das Makro gestartet. Gibt es nicht ein vba Code die das Fenster bei Mousover automatisch aktiviert, so das man nur ein mal klicken muss? 

Ich benutze Vorläufig die Lösung von Windows 10, die Funktion "Fenster aktivieren bei mousover". Ist aber keine ideale Lösung da ich dann jedes Mal die Einstellung manuell aktivieren und deaktivieren muss. Ich benutzte Excel 2019.
Ich hoffe es gibt eine Lösung.

Grüße
Nibio
Antworten Top
#2
Da Du keinen Code zeigst: Welche Arten von Buttons verwendest Du in Deiner Excel Datei?
Antworten Top
#3
Das geht bei Windows 7 oder Windows 10 über die Systemsteuerung :

Systemsteuerung – Center für erleichterte Bedienung – Verwenden der Maus erleichtern ...
... dort das Häkchen bei "Ein Fenster durch Zeigen mit der Maus aktivieren" setzen und unten auf "übernehmen" klicken
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Antworten Top
#4

(02.01.2022, 12:14)LuckyJoe schrieb: Das geht bei Windows 7 oder Windows 10 über die Systemsteuerung :

Systemsteuerung – Center für erleichterte Bedienung – Verwenden der Maus erleichtern ...
... dort das Häkchen bei "Ein Fenster durch Zeigen mit der Maus aktivieren" setzen und unten auf "übernehmen" klicken

Ja, genau aber das ist keine Lösung denn ich muss diese Option jedes mal manuell aktivieren und wenn ich mit Excel fertig bin dann manuell wieder deaktivieren. Oft vergesse ich das zu deaktivieren , dann verschwinden die Fenster einfach im Hintergrund....bis ich merke das ich vergessen habe es zu deaktivieren.

Wieso ist das eigentlich mit Excel so? Viele Grüße.

(02.01.2022, 08:32)Warkings schrieb: Da Du keinen Code zeigst: Welche Arten von Buttons verwendest Du in Deiner Excel Datei?

Danke. Ich verwende einfache Buttons wo man nur ein Makro zuweisen kann, die Form und Farben änern usw.. . Keine Formularsteuerelemente oder aktive X Steuerelemente, ich bin in den Bereich kein Profi.

Ich denke aber das hat mit Buttons nicht zu tun , wenn Du zwei Fenster offen hast, und aktivierst die andere, dann kannst du Excel mit Mousover nicht mehr aktivieren. Es lässt sich nur mit ein klick aktivieren. Das ist genau so wenn ich z.B in Zelle A1 was schreiben möchte, ich muss dann auch zweimal klicken, beim erste klick wird das Fenster aktiviert und erst beim zweite klick wird die Zelle A1 aktiviert. Es hat mit Buttons nicht zu tun. Grüsse aus Ludwigsburg.
Antworten Top
#5
(02.01.2022, 12:47)ms2000 schrieb:
Ich denke aber das hat mit Buttons nicht zu tun , wenn Du zwei Fenster offen hast, und aktivierst die andere, dann kannst du Excel mit Mousover nicht mehr aktivieren. Es lässt sich nur mit ein klick aktivieren. Das ist genau so wenn ich z.B in Zelle A1 was schreiben möchte, ich muss dann auch zweimal klicken, beim erste klick wird das Fenster aktiviert und erst beim zweite klick wird die Zelle A1 aktiviert. Es hat mit Buttons nicht zu tun. Grüsse aus Ludwigsburg.

Wie Du meinst. Ich habe das mit Hilfe von API Calls umgesetzt, aber Du hast Recht, das dürfte zu kompliziert sein.

PS Sehe gerade, es geht auch komplett ohne API Calls und nur einem separaten Active X Control
Antworten Top
#6
(02.01.2022, 15:31)Warkings schrieb: Wie Du meinst. Ich habe das mit Hilfe von API Calls umgesetzt, aber Du hast Recht, das dürfte zu kompliziert sein.

PS Sehe gerade, es geht auch komplett ohne API Calls und nur einem separaten Active X Control

Mit eine durchsichtige Label (Active X ..) und dann bei Mausbewegung automatisch ein Makro starten die das Fenster aktiviert?
Habe ich probiert, ging nicht. Ich habe auf jedenFall ein Code (s. unten) die das Fenster aktiviert. Eine Lösung könnte z.B. ein vba code sein die ein makro starten kann immer wenn der mauskursor im horizzontale axe eine bestimmte position überschreitet, dann könnte das Makro starten die das Fenster (Excel) aktiviert. Am bestens sollte aber keine Makro starten wen das Fenster (Excel) bereit aktiv ist um resource zu sparen.

Option Explicit

Private Declare PtrSafe Function GetForegroundWindow Lib "user32.dll" () As Long
Private Declare PtrSafe Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function SetForegroundWindow Lib "user32.dll" ( _
    ByVal hWnd As Long) As Long
Private Declare PtrSafe Function GetWindowThreadProcessId Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByRef lpdwProcessId As Long) As Long
Private Declare PtrSafe Function AttachThreadInput Lib "user32.dll" ( _
    ByVal idAttach As Long, _
    ByVal idAttachTo As Long, _
    ByVal fAttach As Long) As Long
Private Declare PtrSafe Function ShowWindow Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal nCmdShow As Long) As Long

Private Const SW_MAXIMIZE = 3
Private Const GC_CLASSNAMEEXCEL = "XLMAIN"

Public Sub Test()

    'nur zum Testen soll eine Prozedur simulieren die 5 Sekunden lauft
    'damit du Zeit hast ein anderes Fenster zu aktivieren
    Application.Wait Time + TimeSerial(0, 0, 5)

    'Excel in den Vordergrung holen um die MsgBox anzuzeigen.
    DoEvents
    Call Excel_in_den_Vodergrund

    'MsgBox "Hallo Office-Loesung"

End Sub

Public Sub Excel_in_den_Vodergrund()

    Dim lngHwnd As Long, lngThreadForeWindow As Long, lngThreadWindow As Long

    'Handle des Excelfensters holen
    If Val(Application.Version) < 10 Then
        lngHwnd = FindWindow(GC_CLASSNAMEEXCEL, Application.Caption)
    Else
        lngHwnd = Application.hWnd
    End If

    'Prozess-Id von Excel holen
    lngThreadWindow = GetWindowThreadProcessId(lngHwnd, ByVal 0&)

    'Prozess-Id des Vordergrundfensters holen
    lngThreadForeWindow = GetWindowThreadProcessId(GetForegroundWindow(), ByVal 0&)

    'Wenn Excel das Vordergrundfenster ist
    If lngThreadWindow = lngThreadForeWindow Then

        'Excelfenster aktivieren
        Call SetForegroundWindow(lngHwnd)

    Else

        'Haenge die Excel-Prozess-Id an die Prozess-Id des Vordergrund-Fensters
        Call AttachThreadInput(lngThreadForeWindow, lngThreadWindow, 1&)

        'Excelfenster in den Vordergrund holen
        Call SetForegroundWindow(lngHwnd)

        'Loese die Excel-Prozess-Id von der Prozess-Id des Vordergrund-Fensters
        Call AttachThreadInput(lngThreadForeWindow, lngThreadWindow, 0&)

    End If

    'Excelfenster maximieren
    'Call ShowWindow(lngHwnd, SW_MAXIMIZE)

End Sub



Mit "Call Excel_in_den_Vodergrund" wir das Fenster dann aktiviert.

Gruss
Nibio
Antworten Top
#7
Tja, bei mir geht's.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste