Fensterausrichtung mit VBA
Schritt-für-Schritt-Anleitung
- VBA-Editor öffnen: Drücke
ALT + F11
, um den VBA-Editor in Excel zu öffnen.
- Neues Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" >
Einfügen
> Modul
.
- Code einfügen: Kopiere den folgenden Code in das Modul:
Option Explicit
Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long
Private Declare Function MoveWindow Lib "user32.dll" ( _
ByVal hWnd As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal bRepaint As Long) As Long
Private Declare Function GetWindowRect Lib "user32.dll" ( _
ByVal hWnd As Long, _
ByRef lpRect As RECT) As Long
Private Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" ( _
ByVal hWnd As Long, _
ByVal lpClassName As String, _
ByVal nMaxCount As Long) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Sub FensterVerschieben()
Dim hWnd As Long
Dim udtRECT As RECT
Dim strClassName As String
hWnd = GetForegroundWindow()
If hWnd <> 0 Then
strClassName = Space(256)
GetClassName hWnd, strClassName, 256
If Left$(strClassName, Len(strClassName)) = "Notepad" Then
GetWindowRect hWnd, udtRECT
Call MoveWindow(hWnd, 100, 100, udtRECT.Right - udtRECT.Left, udtRECT.Bottom - udtRECT.Top, True)
End If
End If
End Sub
- Makro ausführen: Drücke
F5
im VBA-Editor, um das Makro auszuführen und das Fenster zu verschieben.
Häufige Fehler und Lösungen
Alternative Methoden
Eine andere Möglichkeit, ein Fenster zu verschieben, besteht darin, die Funktionen SetForegroundWindow
und ShowWindow
zu kombinieren. Hier ist ein Beispiel:
Private Declare Function SetForegroundWindow Lib "user32.dll" ( _
ByVal hwnd As Long) As Long
Private Declare Function ShowWindow Lib "user32.dll" ( _
ByVal hwnd As Long, _
ByVal nCmdShow As Long) As Long
Sub FensterVerschiebenMitShowWindow()
Dim hWnd As Long
hWnd = Hwnd_Fenster("Microsoft Outlook")
If hWnd > 0 Then
SetForegroundWindow hWnd
ShowWindow hWnd, 1 ' Fenster normal anzeigen
' Hier kannst du die MoveWindow-Funktion aufrufen
End If
End Sub
Praktische Beispiele
- Beispiel 1: Verschiebe das Notepad-Fenster an die Position (50, 50):
Call MoveWindow(hWnd, 50, 50, .Right - .Left, .Bottom - .Top, -1)
- Beispiel 2: Verschiebe das Outlook-Fenster mit
GetWindowRect
:
If hWnd = Hwnd_Fenster("Microsoft Outlook") Then
GetWindowRect hWnd, udtRECT
MoveWindow hWnd, 0, 0, .Right - .Left, .Bottom - .Top, True
End If
Tipps für Profis
- Verwende
vba getclassname
, um den Klassennamen des Fensters zu ermitteln. Dies hilft dir, spezifische Fenster zu identifizieren.
- Teste den Code in verschiedenen Excel-Versionen, um sicherzustellen, dass er kompatibel bleibt.
- Achte darauf, dass der Code in einem Modul platziert wird, das zur entsprechenden Excel-Datei gehört.
FAQ: Häufige Fragen
1. Wie kann ich die Größe des Fensters ändern?
Du kannst die MoveWindow
-Funktion verwenden, um die Breite und Höhe des Fensters anzupassen. Ändere die Parameter nWidth
und nHeight
entsprechend.
2. Was ist der Unterschied zwischen GetForegroundWindow
und SetForegroundWindow
?
GetForegroundWindow
gibt das Handle des aktuell aktiven Fensters zurück, während SetForegroundWindow
ein Fenster in den Vordergrund bringt.
3. Kann ich das Fenster auf einen bestimmten Bildschirm verschieben?
Ja, du kannst die Koordinaten für MoveWindow
anpassen, um das Fenster auf einen bestimmten Bildschirm zu verschieben, wenn du mehrere Bildschirme verwendest.