Userform Icon im Rahmen

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von -Franky-.

    Userform Icon im Rahmen

    Hallo,
    ich habe eine kleine Userform wo ich über die Cation Eigenschaft eine Beschriftung für das Userform eingebe, die dann links oben im Rahmen der Userform angezeigt wird, nun hätte ich daneben gerne auch ein kleines Icon und hatte gedacht das würde dann über die Picture eigenschaft des Userform klappen nur das kalppt nicht, wenn ich dort eine .icon Datei auswähle wird nichts im Rahmen der Userform angezeigt, ist das möglich das man da auch ein Bild anzeigt?

    Danke
    Bilder
    • Bild_2022-09-15_054321315.png

      53,08 kB, 490×878, 64 mal angesehen
    Da wirst Du wohl ein wenig mehr Aufwand betreiben müssen. Picture ist das Hintergrundbild des UserForms, würde also flächig angezeigt werden, nicht in der TitleBar.
    shamelessly stolen from office-forums.com:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    3. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    4. Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
    5. Private Const WM_SETICON = &H80
    6. Private Const ICON_SMALL = 0&
    7. Private Const ICON_BIG = 1&
    8. Private Sub UserForm_Initialize()
    9. Dim hWnd As Long
    10. Dim hIcon As Long
    11. hIcon = UserForm1.Picture
    12. If Val(Application.Version) >= 9 Then
    13. hWnd = FindWindow("ThunderDFrame", UserForm1.Caption)
    14. Else
    15. hWnd = FindWindow("ThunderXFrame", UserForm1.Caption)
    16. End If
    17. SendMessage hWnd, WM_SETICON, ICON_SMALL, ByVal hIcon
    18. SendMessage hWnd, WM_SETICON, ICON_BIG, ByVal hIcon
    19. DrawMenuBar hWnd
    20. End Sub

    Das als ICO-File vorliegende UserForm-Picture wird als TitleBar-Icon übernommen. Wie Du das ohne UserForm-Picture machst, findest Du bestimmt selber raus, dazu fehlt mir grad die Muße.
    Bilder
    • Result.png

      5,83 kB, 328×249, 62 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo zusammen,

    und hier noch die Minimalversion auch für 32/64-Bit geeignet.

    VB.NET-Quellcode

    1. Private Declare PtrSafe Function FindWindowA Lib "user32.dll" ( _
    2. ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
    3. Private Declare PtrSafe Function SendMessageA Lib "user32.dll" ( _
    4. ByVal hWnd As LongPtr, ByVal wMsg As Long, _
    5. ByVal wParam As LongPtr, ByVal lParam As Any) As LongPtr
    6. Private Sub UserForm_Initialize()
    7. Const WM_SETICON = &H80
    8. SendMessageA FindWindowA("ThunderDFrame", Caption), _
    9. WM_SETICON, 0&, Image1.Picture.Handle
    10. End Sub


    Gruß Karl-Heinz