Projektanfrage

Projektanfrage über Web Formular   per Online-Formular 
Projektanfrage über E-Mail  Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!
Projektanfrage per Telefon  +49 (0)151 / 164 55 914
Projektanfrage weitere Informationen  weitere Informationen 

Sie benötigen Hilfe oder Unter-stützung? Nutzen Sie für Ihre Anfrage unser Online-Formular, senden Sie uns eine Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! oder rufen Sie uns einfach an.

   
      Referenzen 

 Bosch 
  T-Systems
  Hagebau
  Siemens
 Areva  VW
 Haufe-Lexware  British American Tobacco
  nagel group farbe
   
     Programmierung
Excel Auftragsprogrammierung Access Auftragsprogrammierung
Word Auftragsprogrammierung Outlook Auftragsprogrammierung
   
   

Projektanfrage

 Sie benötigen eine Auftragsprogrammierung?
 Oder suchen Unterstützung bei der Lösungs-
 findung?

  Nutzen Sie unser Anfrageformular

  Jetzt anrufen unter 0151 / 164 55 914

 Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! Projektanfrage per Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! senden

  Weitere Informationen

sitepanel question2

P
r
o
j
e
k
t
a
n
f
r
a
g
e
   

MessageBox individuell am Bildschirm positionieren

MessageBoxen standardmäßig in der Bildschirm-Mitte angezeigt. In manchen Fällen mag es sinnvoll erscheinen, die MessageBox an einer anderen Bildschirmposition auszugeben.

Das ist aber gar nicht so einfach. Dies lässt sich nur unter Einbeziehung von Windows-Funktionalitäten lösen.

Erfassen Sie bitte folgenden VBA-Code in einem leeren Code-Modul:

Public Const SWP_NOSIZE = &H1
Public Const SWP_NOZORDER = &H4
Public Const SWP_NOACTIVATE = &H10
Public Const HCBT_ACTIVATE = 5
Public Const WH_CBT = 5
Public hHook As Long
Public MsgBoxPosX As Integer
Public MsgBoxPosY As Integer
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Function WinProc(ByVal lMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If lMsg = HCBT_ACTIVATE Then
SetWindowPos wParam, 0, MsgBoxPosX, MsgBoxPosY, 0, 0, SWP_NOSIZE Or SWP_NOZORDER Or SWP_NOACTIVATE
UnhookWindowsHookEx hHook
End If
WinProc = False
End Function

Function msg(msgText As String, msgButton As Long, msgTitel As String, ByVal xPos As Long, ByVal yPos As Long)
'** Dimensionierung der Variablen
Dim hInst As Long
Dim XLInst As Long
Dim Thread As Long

'** Werte übergeben
MsgBoxPosX = xPos
MsgBoxPosY = yPos

XLInst = FindWindow("xlmain", vbNullString)
hInst = GetWindowLong(XLInst, GWL_HINSTANCE)
Thread = GetCurrentThreadId()
hHook = SetWindowsHookEx(WH_CBT, AddressOf WinProc, hInst, Thread)

'** Ausgabe des Messagebox Textes
MsgBox msgText, msgButton, msgTitel, 0, 0
End Function

Dem oben stehenden VBA-Code muss nun beim Aufruf die gewünschte X- und Y-Position zur Anzeige der MessageBox übergeben werden. Zur Vereinfachung kann der X- und Y-Wert direkt im Tabellenblatt angegeben werden, siehe Abbildung1. Damit entfällt die Anpassung des Codes bei Änderung der beiden Werte.

 
Abb. 1

Gestartet wird die Funktion über die Schaltfläche "MessageBox" aufrufen. Damit die Funktion korrekt aufgerufen wird, müssen Sie der Schaltfäche folgenden Code zuweisen.

Sub Aufruf_MsgBox()
'** Dimensionierung der Variablen
Dim x
Dim y

With ActiveSheet
  '** Prüfen, ob gültige X und Y Werte eingetragen wurden
  If IsNumeric(.Range("B4")) And IsNumeric(Range("B5")) Then
    x = .Range("B4").Value
    y = .Range("B5").Value
    dummy = msg("Ich bin positioniert wurden", vbInformation, "Hinweis", x, y)
  Else
    MsgBox "Erfassen Sie bitte gültige numerische X- und Y-Achsen-Werte", vbCritical, "Hinweis"
    .Range("B4").Value = 100
    .Range("B5").Value = 100
  End If
End With
End Sub

Sobald Sie nun auf die Schaltfläche klicken, wird die UserForm nahe am rechten Rand und im oberen Drittel des Fensters ausgegeben, siehe Abbildung 2.


Abb. 2

Die Beispieldatei können Sie über den folgenden Link herunterladen.

 

 

   

Relevante Artikel

  • MessageBox individuell am Bildschirm positionieren

    MessageBoxen standardmäßig in der Bildschirm-Mitte angezeigt. In manchen Fällen mag es sinnvoll erscheinen, die MessageBox an einer anderen Bildschirmposition auszugeben. Das ist aber gar nicht so...

  • Einträge aus Listbox auslesen

    In diesem Beispiel zeigen wir Ihnen, wie sich Einträge aus einer ActiveX-Listbox, welche sich auf einem Tabellenblatt befindet, auslesen lassen. Dabei soll es auch möglich sein, dass mehrere...

  • Userform ohne Titelleiste

    VBA bietet die Möglichkeit unter Verwendung von API-Funktionen die Titelleiste, welche standardmäßig bei jeder Userform angezeigt wird, auszublenden. Fügen Sie den untenstehenden VBA-Code der...

  • Userform anhand der Bildschirmauflösung zoomen

      Userforms werden unabhängig von der Bildschirmauflösung immer mit dem selbern Zoomfaktor angezeigt. Das bedeutet, dass Userforms, welche mit einer Bildschirmauflösung von 1600 x 1200 Punkten entwickelt...

  • Die Größe des Excel-Fensters ermitteln

    Mit diesem Makro kann die Breite, sowie die Höhe des Excel Fensters ermittelt werden. Unterschieden wird zwischen der verwendbaren Größe von Excel, also der tatsächlichen Tabellengröße und der...