Modificar el texto de un botón del msgbox

Como puedo modificar el texto de un msgbox para poner un texto especifico.

En su defecto trate de crear un userfrom con botones para la selección de lo necesario pero tengo problema con la interactuación de esa userfrom con la otras donde están los parámetros a tomar en cuenta

3

3 respuestas

Respuesta
2

H o l a:

Crea un formulario con los botones que necesitas, en este ejemplo, voy a crear el formulario con 3 botones:

El código de este formulario. Observa como en la sección de declaraciones tengo declaradas como públicas las variables que van a recibir los parámetros:

Public titulo, mensaje, txtboton1, txtboton2, txtboton3
'
Private Sub CommandButton1_Click()
'Por Dante Amor
    respuesta = "boton1"
    Unload Me
End Sub
'
Private Sub CommandButton2_Click()
'Por Dante Amor
    respuesta = "boton2"
    Unload Me
End Sub
'
Private Sub CommandButton3_Click()
'Por Dante Amor
    respuesta = "boton3"
    Unload Me
End Sub
'
Private Sub UserForm_Activate()
    Me.Caption = titulo
    Label1.Caption = mensaje
    CommandButton1.Caption = txtboton1
    CommandButton2.Caption = txtboton2
    CommandButton3.Caption = txtboton3
    DoEvents
End Sub

En un módulo pon la siguiente función:

Function NuevoMsgBox(tit, men, txtb1, txtb2, txtb3)
'Por.Dante Amor
    With UserForm1
        .titulo = tit
        .mensaje = men
        .txtboton1 = txtb1
        .txtboton2 = txtb2
        .txtboton3 = txtb3
        .Show
    End With
    NuevoMsgBox = respuesta
End Function

En otro módulo o en un procedimiento dentro de otro formulario, pon el siguiente código, observa como al inicio de toda la macro, en la sección de declaraciones tiene que ir la variable respuesta:


En esa variable respuesta se almacenará el resultado del botón que hayan presionado:

Public respuesta
'
Sub MacroX()
'Por.Dante Amor
    tit = "Prueba de un nuevo msgbox"
    men = "Selecciona uno de los botones"
    txtb1 = "Para imprimir"
    txtb2 = "Enviar a PDF"
    txtb3 = "Cancelar"
    LaRespuesta = NuevoMsgBox(tit, men, txtb1, txtb2, txtb3)
    Select Case LaRespuesta
        Case "boton1"
            'instrucciones
            MsgBox "Se inicia impresión"
        Case "boton2"
            'instrucciones
            MsgBox "enviar a pdf"
        Case "boton3"
            'instrucciones
            MsgBox "Proceso cancelado"
    End Select
End Sub

Cuando ejecutas la MacroX, a su vez ejecuta la Function NuevoMsgBox con los parámetros que necesites. La Fuction NuevoMsgBox se va a encargar de abrir el Userform1 y le va a pasar los parámetros para que se vea así:

Cuando presionas uno de los botones, se envía de regreso la respuesta con el botón que se presionó, por ejemplo si presionas el primer botón:

    respuesta = "boton1"
    Unload Me

La variable respuesta es igual a "boton1", se cierra el formulario y le regresa el control a la Function NuevoMsgBox.

La Function NuevoMsgBox termina y también regresa el valor de la variable respuesta en esta instrucción:

NuevoMsgBox = respuesta

Ya en la MacroX( ) revisas el contenido de la variable respuesta y decides que instrucciones son las que deben continuar.


':)
':)
Respuesta
1

El msgbox te permite escribir texto libremente. Creo que te estás explicando mal, ya que la instrucción es:

Variable = MsgBox ("Texto Libre del MSG", TipoBotón, "Texto Libre del Título del MSG")

También está la opción de la ayuda pero no es obligatoria

Específicamente que es lo que quieres, si te refieres al texto del "TipoBotón, entonces solo podrás usar los que tienes ahí y cualquier otro texto que necesites estás obligado a hacer un userform

Respuesta
1

A ver si te funciona esto:

If TextBox1.Text <> "" Then
MsgBox (TextBox1.Text), vbInformation, "Informacion"
Else
MsgBox ("Error"), vbCritical, "ERROR"
End If

No olvides calificar si es de tu ayuda amigo...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas