Titulo de UserForm
una carencia el no saber cómo colocar un icono a dicho objeto, como es “clásico”
encontrarlo en otrosformularios de nuestro sistema operativo. Ya que Excel no trae por
defecto alguna propiedad que agregue dicho icono a nuestros UserForm, debemos recurrir a
las funciones del API de Windows.
SendMessage:Función del API de Windows que envía un mensaje a un objeto receptor con
el fin de que este lo procese y/o interprete
WM_SETICON: Constante que asocia un nuevo icono grande o pequeña con una ventanaICON_SMALL: Asociado a WM_SETICON. El sistema muestra el icono pequeño en el titulo
de la ventana
ICON_BIG: Asociado a WM_SETICON. El sistema muestra el icono grande en el cuadro de
diálogoALT+TAB
Ahora que sabemos que significan y/o para que sirven esos códigos, manos a la obra.
Agrega un UserForm a tu Excel, ahora coloca en él un objeto “Image” (En mi caso el nombre
seráImage1). En la propiedad “Picture” busca el icono (*.ico) de tu preferencia y usalo en tu
objeto “Image”. Ese icono es el que aparecerá en el titulo de tu UserForm. Cambia la
propiedad “Visible” de tuobjeto “Image” a “False” (solo si lo deseas).
Ahora copia y pega este código en el modulo de tu UserForm:
Option Explicit
Private Const WM_SETICON = &H80
Private Const ICON_SMALL = 0&Private Const ICON_BIG = 1&
Private Declare Function FindWindow _
Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private DeclareFunction SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Private Sub UserForm_Initialize()
Dim hwndAs Long
Dim hIcon As Long
'capturamos la imagen de nuestro objeto "Image"
hIcon = Image1.Picture
'Obtenemos el "Handle" del Userform
hwnd = FindWindow("ThunderDFrame", Me.Caption)...
Regístrate para leer el documento completo.