Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: MsgBox Positionierung

MsgBox Positionierung
16.12.2015 08:07:38
Sigi
Guten Morgen,
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

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MsgBox ja/nein
16.12.2015 08:48:04
hary
Moin Sigi
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

gruss hary

Anzeige
AW: MsgBox ja/nein
16.12.2015 09:49:38
Sigi
Hallo hary,
Danke für Deine Hilfe.
Ich möchte jedoch die Positionierung für mehrere MsgBoxen verwenden.
Dazu würde ich gerne Verzweigen Bei Ja z.B. "m1" bei Nein "m2"
bzw. soll sText und sText1 ein bestimmtes makro aufrufen.
Danke!
Gruß
Sigi
https://www.herber.de/bbs/user/102287.xlsm

Anzeige
Probier mal....
16.12.2015 11:21:21
robert
Hi,
statt Application Run...
Call M1 und Call M2
Gruß
robert

AW: Danke, Robert! o.T.
16.12.2015 11:57:49
Sigi
.
;
Anzeige
Anzeige

Infobox / Tutorial

MsgBox Positionierung in Excel VBA


Schritt-für-Schritt-Anleitung

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.


Häufige Fehler und Lösungen

  • 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.


Alternative Methoden

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:

  1. Erstelle ein neues UserForm in Excel VBA.
  2. Füge Schaltflächen für „Ja“ und „Nein“ hinzu.
  3. Verwende die Show-Methode, um das UserForm anzuzeigen.

Praktische Beispiele

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.


Tipps für Profis

  • Nutze die Application.OnTime-Methode, um zeitgesteuerte MsgBoxen anzuzeigen.
  • Experimentiere mit verschiedenen MsgBox-Designs in UserForms, um die Benutzererfahrung zu verbessern.
  • Verwende benutzerdefinierte Funktionen, um die Wiederverwendbarkeit deiner MsgBox-Logik zu maximieren.

FAQ: Häufige Fragen

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige