¿Cómo pasar una variable de un UserForm a otro VBA?

La otra vez hice una pregunta muy general sobre este tema y pudieron entenderme así que esta vez seré más especifico. Tengo un UserForm llamado notificación, el UserForm funciona perfectamente, y de hecho lo llamo desde otros UserForm. Este es el código del UserForm Notificación.

Public CBtnn, Confir As Integer
Private Sub cancelarNoti_Click()
    CBtnn = 0
    Unload Me
End Sub
Private Sub confirmarNoti_Click()
    CBtnn = 1
    Unload Me
End Sub
Sub nN(Notice, Optional ByVal TT As Integer = 1)
    With Me
        With .labelTipoNoti
            Select Case TT
                Case 0
                .Caption = ""
                Case 1
                .Caption = "INFORMA"
                Case 2
                .Caption = "PREGUNTA"
                Case False
                .Caption = "INFORMA"
            End Select
        End With
    End With
    Me.labelNotice.Caption = Notice
    Notificacion.Show
End Sub
Private Sub txbConf_Change()
    Confir = IIf(UCase(txbConf.Text) = "S", 1, 0)
End Sub
Private Sub UserForm_Click()
End Sub
Private Sub UserForm_Initialize()
    CBtnn = 0: Confir = 0
End Sub

Imagen del UserForm

Como pueden ver el formulario me pide una doble confirmación de una acción, para que continué el proceso el usuario debe ingresar la "S" en el cuadro texto, y lugo hacer click en el botón "Confirmar", así estas dos variabes "Public CBtnn, Confir As Integer" deberán quedar con un 1.

Al mostrar este UserForm desde otro UserForm uso este codigo:

    'Confirmacion
    With Notificacion
        Call añadirLlista(.listaInfo, 0, Info(4) & ",  FECHA:" & Info(1))
        Call añadirLlista(.listaInfo, 1, "VENCE: " & Info(2) & ",  " & " ORDEN: " & Format(Info(0), "000000"))
        Call añadirLlista(.listaInfo, 2, "[" & Info(3) & "] " & hallar(listaCol("terceros", 1, "codigo"), Info(3)).Offset(0, 7))
        Call añadirLlista(.listaInfo, 3, "VALOR TOTAL: " & (Info(5)) & ", " & _
            IIf(Info(6) = 0, "AUTOMATICA.", "MANUAL."))
        .Frame.Visible = True
        Call Notificacion.nN("¿Esta seguro que desea crear esta factura?", 2)
        MsgBox .CBtnn & .Confir
        If .CBtnn = 0 Or .Confir = 0 Then Exit Sub
    End With

Que funciona perfecto exepto por el hecho de que no es capas de leer las variables publicas de esta linea de codigo: "MsgBox .CBtnn & .Confir" Salen completamente vacias o aveces lee solo Confir, he intentado de todo y he revisado el paso a paso por instrucciones, y el UserForm Notificacion asigna correctamente valores a ambas variables pero cuando esta en el resto de este codigo no es capas de leer las variables, como si estuvieran restringidas para el, he intentado de todo y ya no se que hacer, quiero saber si hay una forma mas apropiada de leer variable de un UserForm desde otro UserForm  o si lo estoy haciendo correctamente, no se que hacer me tiene barado esta pequeñez.

Respuesta
2

Cristian: No soy especialista en Excel, pero para que puedas "reclamar" los valores de un ao varias variables desde cualquier parte de la Aplicación debes declararlas como Public (o Global) en un Módulo de código Estándar. Ejemplo:

Public  UnaNota As String

Public OtraNota As String

Public MiNumero As Integer

Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas