Cambiar posición de un MsgBox y el formato de su texto.

30/04/2005 - 03:00 por Esteban Dido | Informe spam
Hola grupo,
- ¿Es posible cambiar la posición en que aparece un MsgBox para evitar que
aparezca siempre al centro de la pantalla?. Sé como hacerlo con el InputBox
pero no funciona con el MsgBox.
- También quisiera saber si se puede cambiar el formato del texto de un
MsgBox para que presente la letra más grande, en negrita y/o de otro color.
Gracias.

Saludos

Preguntas similare

Leer las respuestas

#11 Esteban Dido
05/05/2005 - 01:57 | Informe spam
Gracias por los ejemplos, H.
Definitivamente el código para cambiar la posición de un MsgBox es una lata.
Opté por usar esta vez en su lugar la alt.1 que enviaste.
E.D.

Saludos
"Héctor Miguel" escribió en el mensaje
news:O8$
hola, Esteban !

> ... No pretendo que aparezcan los dos msgbox al mismo tiempo... Cambia


al ejemplo a:
> Sub Nombre()
> If Sheets(1).Name = "Hoja1" Then
> MsgBox "Aún no se ha cambiado el nombre de la primera hoja"
> End If
> End Sub
> y pregunto lo mismo
> ... ¿como hago para que el msgbox aparezca en un lugar que no sea el


centro de la pantalla?

1.- considerando que 'algo comentaste' acerca de los enlaces


'recomendados'... [demasiado codigo ?]
[creo que] la manera mas 'ligera' pudiera ser a traves de un userform


con solo una 'etiqueta' y un 'boton'
[podrias dejar 'estatico/fijo' el texto del control label: ->Aun no se


ha cambiado.<-]
utilizando las propiedades 'Left' y 'Top' [segun la resolucion de la


pantalla/pc/...]
2.- si prefieres/requieres que sea un msgbox... [no queda 'otra' que...


'bastante codigo'] ;)

te paso un ejemplo de cada alternativa y, si cualquier duda... comentas?
saludos,
hector.

1: usando un formulario [un control 'label' y un control 'commandbutton']
en el modulo de codigo del formulario ==> Private Sub CommandButton1_Click()
Unload Me
End Sub
en un modulo de codigo 'normal' ==> Sub Nombre()
If Sheets(1).Name = "Hoja1" Then
With UserForm1
.StartUpPosition = 0
.Left = 15
.Top = 25
.Show
End With
End If
End Sub

2: utilizando [las menos 'posibles'] llamadas a las API's... la macro para


mostrar el msgbox es la ultima
[es un procedimiento 'adaptado' de una pagina en aleman -con ciertos


'errores' que ya estan corregidos-]
[solo 'tendras que' encontrar/modificar los parametros 0, 0 por la


posicion: Izquierda, Arriba 'deseada']
[creo que, lo 'unico' que podria hacerse para incrementar la ayuda,


seria 'españolizar' el proceso] :))
en un modulo de codigo 'normal' ==> Private X32770&, Y32770&, MyHook&
Type CWPSTRUCT
lParam As Long
wParam As Long
Message As Long
hwnd As Long
End Type
Public Const WH_CALLWNDPROC& = 4
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOZORDER = &H4
Declare Function SetWindowsHookEx& Lib "user32" Alias _
"SetWindowsHookExA" (ByVal idHook&, ByVal lpfn&, ByVal _
hmod&, ByVal dwThreadId&)
Declare Function UnhookWindowsHookEx& Lib "user32" (ByVal hHook&)
Declare Function GetClassName& Lib "user32" Alias _
"GetClassNameA" (ByVal hwnd&, ByVal lpClassName$, _
ByVal nMaxCount&)
Private Declare Function GetCurrentThreadId Lib "Kernel32" () As Long
Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long
Public Sub Position32770(x As Long, y As Long)
X32770 = x
Y32770 = y
MyHook = SetWindowsHookEx(WH_CALLWNDPROC, AddressOf Hook32770, 0,


GetCurrentThreadId())
End Sub
Private Function Hook32770&(ByVal nCode&, ByVal wParam&, MyStruct As


CWPSTRUCT)
Const WM_CREATE& = &H1
Dim PosFlag&
With MyStruct
If .Message = WM_CREATE Then
Dim s$, i%
s = String$(255, 0)
GetClassName .hwnd, s, 256
i = InStr(s, vbNullChar)
If i Then s = Left$(s, i - 1)
If s = "#32770" Then
Call UnhookWindowsHookEx(MyHook)
PosFlag = SWP_NOZORDER Or SWP_NOSIZE
SetWindowPos .hwnd, 0&, X32770, Y32770, 0&, 0&, PosFlag
End If
End If
End With
End Function
Sub MostrarMensajeEnPosicion()
Position32770 0, 0
MsgBox "Aún no se ha cambiado el nombre de la primera hoja"
End Sub


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida