ich habe vom Internet diesen Code für das Positionieren der MsgBox gefunden.
Leider kann ich diesen nicht so umändern das auf Ja und Nein reagiert wird.
Was muß ich ändern?
Danke!
Gruß
Sigi
https://www.herber.de/bbs/user/102281.xlsm
Function msg(msgText As String, msgButton As Long, msgTitel As String, ByVal xPos As Long, _
ByVal yPos As Long)
Dim hInst As Long
Dim XLInst As Long
Dim Thread As Long
MsgBoxPosX = xPos
MsgBoxPosY = yPos
XLInst = FindWindow("xlmain", vbNullString)
hInst = GetWindowLong(XLInst, GWL_HINSTANCE)
Thread = GetCurrentThreadId()
hHook = SetWindowsHookEx(WH_CBT, AddressOf WinProc, hInst, Thread)
If MsgBox(msgText, msgButton, msgTitel, 0, 0) = vbYes Then
Worksheets("Tabelle2").Activate '--bei ja springe zu Tabelle2
Else
MsgBox "nein geklickt"
End If
End Function
Um eine MsgBox in Excel VBA zu positionieren und die Benutzerreaktionen zu verarbeiten, kannst du den folgenden Code verwenden. Diese Funktion ermöglicht es dir, die Position der MsgBox zu definieren und auf die Auswahl des Benutzers zu reagieren.
Function msg(msgText As String, msgButton As Long, msgTitel As String, ByVal xPos As Long, ByVal yPos As Long)
Dim hInst As Long
Dim XLInst As Long
Dim Thread As Long
MsgBoxPosX = xPos
MsgBoxPosY = yPos
XLInst = FindWindow("xlmain", vbNullString)
hInst = GetWindowLong(XLInst, GWL_HINSTANCE)
Thread = GetCurrentThreadId()
hHook = SetWindowsHookEx(WH_CBT, AddressOf WinProc, hInst, Thread)
If MsgBox(msgText, msgButton, msgTitel, 0, 0) = vbYes Then
Call M1 ' Hier den spezifischen Code für die "Ja" Antwort
Else
Call M2 ' Hier den spezifischen Code für die "Nein" Antwort
End If
End Function
Um mehrere MsgBoxen mit unterschiedlichen Verzweigungen zu verwenden, kannst du die Call M1 und Call M2 Befehle entsprechend anpassen.
Fehler: MsgBox wird nicht an der gewünschten Position angezeigt.
Lösung: Stelle sicher, dass die Werte für xPos und yPos korrekt übergeben werden. Diese Werte sollten in Pixeln angegeben werden.
Fehler: Funktion reagiert nicht auf die Antworten des Benutzers.
Lösung: Überprüfe, ob die MsgBox-Optionen (msgButton) korrekt gesetzt sind. Zum Beispiel sollte für Ja/Nein die Konstante vbYesNo verwendet werden.
Eine alternative Methode zur Handhabung von MsgBoxen ist die Verwendung von UserForms. Mit UserForms kannst du deine eigenen Dialoge erstellen, die mehr Freiheit in der Gestaltung und Positionierung bieten. Hier ist ein einfaches Beispiel, wie du ein UserForm erstellen kannst:
Show-Methode, um das UserForm anzuzeigen.Hier ist ein Beispiel, wie du die Funktion msg aufrufen kannst:
Sub BeispielAufruf()
msg "Möchten Sie fortfahren?", vbYesNo, "Bestätigung", 100, 100
End Sub
In diesem Beispiel wird die MsgBox an der Position (100, 100) auf dem Bildschirm angezeigt.
Application.OnTime-Methode, um zeitgesteuerte MsgBoxen anzuzeigen.1. Wie kann ich die MsgBox immer in der Mitte des Bildschirms positionieren?
Du kannst die Bildschirmgröße mit Application.Width und Application.Height abfragen und die Position entsprechend berechnen.
2. Kann ich die Schaltflächen der MsgBox anpassen?
Nein, die Schaltflächen der standardmäßigen MsgBox sind festgelegt. Du kannst jedoch ein UserForm verwenden, um benutzerdefinierte Schaltflächen zu gestalten.