Saltar al contenido

Interconexión y Configuración de Formularios


Ir a la solución Solucionado por JSDJSD,

Recommended Posts

publicado (editado)

Saludos amigos 

Tengo un formulario (Fmrfechas) el cual debe aparecer una vez que haga Login en el Formulario (frmlogin) introduciendo un Usuario (TxtUSUARIO) y Clave (TxtCLAVE) para lo cual tengo esta macro que me funciona muy bien hasta ahora: 

Private Sub CmdACEPTAR_Click()
Call Module1.BotonAceptar
Fmrfechas.Show
End Sub

Sin embargo, cuando los campos Usuario (TxtUSUARIO) y la Clave (TxtCLAVE) estan vacíos o introduzco datos erróneos al hacer click en el Botón Aceptar (CmdACEPTAR) igual me aparece el formulario.

Pregunta 01: requiero me ayuden con los elementos que deberían agregársele a la macro para que sí y solo si cuando el Usuario (TxtUSUARIO) y la Clave (TxtCLAVE) sean correctos sea la única forma de que se muestre el formulario (Fmrfechas)

Una vez aparece el formulario (Fmrfechas) se deben digitar tres fechas especificas: Fecha de Nacimiento (TxtNACIMIENTO), Fecha de Ingreso (TxtINGRESO), y Fecha del (TxtACCIDENTE), para lo cual tengo esta macro que me funciona muy bien hasta ahora: 

Private Sub CmdREGISTRAR_Click()
If TxtNACIMIENTO.Value = "" Or TxtINGRESO.Value = "" Or TxtACCIDENTE.Value = "" Then
MsgBox ("Datos Incompletos: Faltan Campos por Llenar"), vbExclamation, 
Else
Range("D19").Offset.Select
ActiveCell.Offset(0, 0) = TxtNACIMIENTO.Value
ActiveCell.Offset(0, 2) = TxtINGRESO.Value
ActiveCell.Offset(0, 4) = TxtACCIDENTE.Value
TxtNACIMIENTO = ""
TxtINGRESO = ""
TxtACCIDENTE = ""
Unload Me
End If
End Sub

Private Sub UserForm_Initialize()
Me.TxtNACIMIENTO.SetFocus
End Sub

Sin embrago al desplazar el cursor mediante Tab o Enter pasa del campo (TxtNACIMIENTO) al campo Fecha del (TxtACCIDENTE) y de este al Botón Registrar (CmdREGISTRAR) sin pasar por el campo Fecha de Ingreso (TxtINGRESO), adicionalmente puedo introducir cualquier formato de fecha "d/m/yy", "d/mm/yy", "dd/mm//yy", "dd/mm/yyyy",  etc

Pregunta 02: requiero me ayuden con los elementos que deberían agregársele a la macro para que el cursor se desplace mediante Tab o Enter de forma secuencial por los tres campos en el siguiente orden Fecha de Nacimiento (TxtNACIMIENTO), Fecha de Ingreso (TxtINGRESO) y Fecha del (TxtACCIDENTE)

Pregunta 03: requiero me ayuden con los elementos que deberían agregársele a la macro para que única y exclusivamente admita en los campos Fecha de Nacimiento (TxtNACIMIENTO), Fecha de Ingreso (TxtINGRESO) y Fecha del (TxtACCIDENTE) del formulario (Fmrfechas) el formato estándar de fecha dd/mm/yyyy en los tres campos y en caso que se introduzca una fecha, valores, signos etc con otro formato aparezca un Msgbox ("Formato de Fecha No Admitido")

Pregunta 04: requiero me ayuden con los elementos que deberían agregársele a la macro para que una vez introducida la información con el formato de fecha admitido (dd/mm/yyyy) la macro evalué los campos Fecha de Nacimiento (TxtNACIMIENTO), Fecha de Ingreso (TxtINGRESO) y Fecha del (TxtACCIDENTE) y permita registrar la información al hacer click en el Botón Registrar (CmdREGISTRAR) si y solo si se cumplen las siguientes condiciones:

Fecha de Nacimiento (TxtNACIMIENTO) > Fecha de Ingreso (TxtINGRESO)

MsgBox ("Fecha Errónea: La Fecha de Nacimiento No Puede ser Mayor a la Fecha de Ingreso"), vbExclamation

Fecha de Nacimiento (TxtNACIMIENTO) < Fecha de Ingreso (TxtINGRESO)

MsgBox ("Fecha Errónea: La Fecha de Nacimiento No Puede ser Menor a la Fecha de Ingreso"), vbExclamation

Fecha de Nacimiento (TxtNACIMIENTO) = Fecha de Ingreso (TxtINGRESO)

MsgBox ("Fecha Errónea: La Fecha de Nacimiento No Puede ser Igual a la Fecha de Ingreso"), vbExclamation

Fecha de Nacimiento (TxtNACIMIENTO) > Fecha del (TxtACCIDENTE)

MsgBox ("Fecha Errónea: La Fecha de Nacimiento No Puede ser Mayor a la Fecha del Accidente"), vbExclamation

Fecha de Nacimiento (TxtNACIMIENTO) < Fecha del (TxtACCIDENTE)

MsgBox ("Fecha Errónea: La Fecha de Nacimiento No Puede ser Menor a la Fecha del Accidente"), vbExclamation

Fecha de Nacimiento (TxtNACIMIENTO) = Fecha del (TxtACCIDENTE)

MsgBox ("Fecha Errónea: La Fecha de Nacimiento No Puede ser Igual a la Fecha de Ingreso"), vbExclamation

 Fecha de Ingreso (TxtINGRESO) > Fecha del (TxtACCIDENTE)

MsgBox ("Fecha Errónea: La Fecha de Ingreso No Puede ser Mayor a la Fecha del Accidente"), vbExclamation

Fecha de Ingreso (TxtINGRESO) < Fecha del (TxtACCIDENTE)

MsgBox ("Fecha Errónea: La Fecha de Ingreso No Puede ser Menor a la Fecha del Accidente"), vbExclamation

Mucho les sabre agradecer la ayuda que me puedan brindar

 

Editado el por jues
publicado

Pregunta 01: Para que el formulario Fmrfechas solo se muestre cuando el usuario y la clave sean correctos, puedes agregar una validación en tu macro.

Private Sub CmdACEPTAR_Click()
    If TxtUSUARIO.Value = "" Or TxtCLAVE.Value = "" Then
        MsgBox ("Usuario o Clave Vacíos"), vbExclamation
    ElseIf Not Module1.BotonAceptar(TxtUSUARIO.Value, TxtCLAVE.Value) Then
        MsgBox ("Usuario o Clave Incorrectos"), vbExclamation
    Else
        Fmrfechas.Show
    End If
End Sub

Este código, Module1.BotonAceptar debería ser una función que reciba el usuario y la clave, y devuelva True si son correctos y False en caso contrario.

publicado

Pregunta 02: Para que el cursor se desplace de forma secuencial por los campos TxtNACIMIENTO, TxtINGRESO y TxtACCIDENTE, debes establecer el orden de tabulación de los controles en tu formulario. Esto se hace en el diseñador de formularios, seleccionando cada control y estableciendo su propiedad TabIndex en el orden deseado.

publicado

Pregunta 03: Para validar el formato de las fechas, puedes usar la función IsDate de VBA, que devuelve True si la cadena puede convertirse en una fecha.

Private Sub CmdREGISTRAR_Click()
    If Not IsDate(TxtNACIMIENTO.Value) Or Not IsDate(TxtINGRESO.Value) Or Not IsDate(TxtACCIDENTE.Value) Then
        MsgBox ("Formato de Fecha No Admitido"), vbExclamation
    ElseIf TxtNACIMIENTO.Value = "" Or TxtINGRESO.Value = "" Or TxtACCIDENTE.Value = "" Then
        MsgBox ("Datos Incompletos: Faltan Campos por Llenar"), vbExclamation
    Else
        ' Lo que falta del código...
    End If
End Sub

IsDate verifica si los valores de los campos son fechas válidas.

publicado

Pregunta 04: Para validar las fechas de acuerdo a las condiciones que mencionas, puedes agregar las validaciones correspondientes en tu macro.

Private Sub CmdREGISTRAR_Click()
    ' Parte de tu código...
    Else
        Dim fechaNacimiento As Date
        Dim fechaIngreso As Date
        Dim fechaAccidente As Date
        
        fechaNacimiento = CDate(TxtNACIMIENTO.Value)
        fechaIngreso = CDate(TxtINGRESO.Value)
        fechaAccidente = CDate(TxtACCIDENTE.Value)
        
        If fechaNacimiento > fechaIngreso Then
            MsgBox ("Fecha Errónea: La Fecha de Nacimiento No Puede ser Mayor a la Fecha de Ingreso"), vbExclamation
        ElseIf fechaNacimiento < fechaIngreso Then
            MsgBox ("Fecha Errónea: La Fecha de Nacimiento No Puede ser Menor a la Fecha de Ingreso"), vbExclamation
        ElseIf fechaNacimiento = fechaIngreso Then
            MsgBox ("Fecha Errónea: La Fecha de Nacimiento No Puede ser Igual a la Fecha de Ingreso"), vbExclamation
        ElseIf fechaNacimiento > fechaAccidente Then
            MsgBox ("Fecha Errónea: La Fecha de Nacimiento No Puede ser Mayor a la Fecha del Accidente"), vbExclamation
        ElseIf fechaNacimiento < fechaAccidente Then
            MsgBox ("Fecha Errónea: La Fecha de Nacimiento No Puede ser Menor a la Fecha del Accidente"), vbExclamation
        ElseIf fechaNacimiento = fechaAccidente Then
            MsgBox ("Fecha Errónea: La Fecha de Nacimiento No Puede ser Igual a la Fecha del Accidente"), vbExclamation
        Else
            ' Lo que sigue del código...
        End If
    End If
End Sub

CDate convierte las cadenas a fechas para poder compararlas

publicado (editado)
hace 2 horas, Israel Cassales dijo:

Bueno, sin libro de ejemplo y toda una guía de instrucciones vamos a intentar aportar algo...

Saludos Sr Israel Cassales Waooo muy agradecido por sus respuestas a cada una de mis inquietudes, ciertamente pase por alto adjuntar el libro  sin embargo nunca es tarde cuando de pagar la novatada se trata  y al insertar las macros que me envió algunas me dan  alertas cosa que achaco a la información que suministre y a la ausencia del libro ya que su respuesta aun en esas condiciones fue magistral razón por la cual adjunto  un extracto del libro para que se efectué la revisión correspondiente  ya que mi nula experiencia en programación de cualquier tipo no me permite detectar que es lo que estoy haciendo mal (y se que lo estoy haciendo mal jajaja)  de allí que coloque las macros en el orden que me indico en forma de nota debajo de las que están funcionales para que se pueda hacer la verificación que corresponda , le estoy muy agradecido ya que por  insignificante que se vea lo que estoy preguntando en comparación de otras cosas mas profundas que se tratan en este foro para mi es de gran ayuda  en mi trabajo diario

Usuario: Prueba 

Clave : Prueba 12345PRUEBA.xlsm

Editado el por jues
  • 3 weeks later...
publicado

Saludos Sr Israel Cassales espero estés bien he seguido trabajando en mi pequeño proyecto y combinando y modificando con lo que usted me me envió he logrado configurar estas líneas de código que en líneas generales dan respuesta a lo planteado con anterioridad pero con algunos detalles que seguidamente le comento resultados 

Dim ConfigFech As Integer

Private Sub TxtNACIMIENTO_Change()

'Configuracion Fecha de Nacimiento
    If ConfigFech = False Then
        If Len(TxtNACIMIENTO) > 10 Then
            TxtNACIMIENTO = Mid(TxtNACIMIENTO, 1, 10)
        Else
            If Len(TxtNACIMIENTO) = 2 Then
                TxtNACIMIENTO = TxtNACIMIENTO & "/"
            End If
            If Len(TxtNACIMIENTO) = 5 Then
                TxtNACIMIENTO = TxtNACIMIENTO & "/"
            End If
        End If
    End If
End Sub

Private Sub TxtNACIMIENTO_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 8 Then
        ConfigFech = True
    Else
        ConfigFech = False
    End If
End Sub

Private Sub TxtINGRESO_Change()

'Configuracion Fecha de Ingreso
    If ConfigFech = False Then
        If Len(TxtINGRESO) > 10 Then
            TxtINGRESO = Mid(TxtINGRESO, 1, 10)
        Else
            If Len(TxtINGRESO) = 2 Then
                TxtINGRESO = TxtINGRESO & "/"
            End If
            If Len(TxtINGRESO) = 5 Then
                TxtINGRESO = TxtINGRESO & "/"
            End If
        End If
    End If
End Sub

Private Sub TxtINGRESO_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 8 Then
        ConfigFech = True
    Else
        ConfigFech = False
    End If
End Sub

Private Sub TxtACCIDENTE_Change()

'Configuracion Fecha del Accidente
    If ConfigFech = False Then
        If Len(TxtACCIDENTE) > 10 Then
            TxtACCIDENTE = Mid(TxtACCIDENTE, 1, 10)
        Else
            If Len(TxtACCIDENTE) = 2 Then
                TxtACCIDENTE = TxtACCIDENTE & "/"
            End If
            If Len(TxtACCIDENTE) = 5 Then
                TxtACCIDENTE = TxtACCIDENTE & "/"
            End If
        End If
    End If
End Sub

Private Sub TxtACCIDENTE_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 8 Then
        ConfigFech = True
    Else
        ConfigFech = False
    End If
End Sub
Private Sub CmdREGISTRAR_Click()

'Campos Vacios o Formato de Fecha No Admitido
If Not IsDate(TxtNACIMIENTO.Value) Or Not IsDate(TxtINGRESO.Value) Or Not IsDate(TxtACCIDENTE.Value) Then
        MsgBox ("Datos Incompletos o Formato de Fecha No Admitido"), vbExclamation
    ElseIf TxtNACIMIENTO.Value = "" Or TxtINGRESO.Value = "" Or TxtACCIDENTE.Value = "" Then
        MsgBox ("Datos Incompletos o Formato de Fecha No Admitido"), vbExclamation

'Ubicacion de Fechas
Else
    Range("D16").Offset.Select
    ActiveCell.Offset(0, 0) = TxtNACIMIENTO.Value
    ActiveCell.Offset(0, 2) = TxtINGRESO.Value
    ActiveCell.Offset(0, 4) = TxtACCIDENTE.Value

'Formato de Fecha
    Me.TxtNACIMIENTO.Value = Format(Me.TxtNACIMIENTO.Value, "dd/mm/yyyy")
    Range("D16").Value = Me.TxtNACIMIENTO
    Me.TxtINGRESO.Value = Format(Me.TxtINGRESO.Value, "dd/mm/yyyy")
    Range("G16").Value = Me.TxtINGRESO
    Me.TxtACCIDENTE.Value = Format(Me.TxtACCIDENTE.Value, "dd/mm/yyyy")
    Range("I16").Value = Me.TxtACCIDENTE

'Condicionales de Fechas
    Dim FechaNacimiento As Date
    Dim FechaIngreso As Date
    Dim FechaAccidente As Date

    FechaNacimiento = CDate(TxtNACIMIENTO.Value)
    FechaIngreso = CDate(TxtINGRESO.Value)
    FechaAccidente = CDate(TxtACCIDENTE.Value)
        
If FechaNacimiento > FechaIngreso Then
        MsgBox ("Fecha Errónea: La Fecha de Nacimiento No Puede ser Mayor a la Fecha de Ingreso"), vbExclamation
    ElseIf FechaNacimiento = FechaIngreso Then
        MsgBox ("Fecha Errónea: La Fecha de Nacimiento No Puede ser Igual a la Fecha de Ingreso"), vbExclamation
    ElseIf FechaNacimiento > FechaAccidente Then
        MsgBox ("Fecha Errónea: La Fecha de Nacimiento No Puede ser Mayor a la Fecha del Accidente"), vbExclamation
    ElseIf FechaNacimiento = FechaAccidente Then
        MsgBox ("Fecha Errónea: La Fecha de Nacimiento No Puede ser Igual a la Fecha del Accidente"), vbExclamation
    ElseIf FechaIngreso > FechaAccidente Then
        MsgBox ("Fecha Errónea: La Fecha de Ingreso No Puede ser Mayor a la Fecha del Accidente"), vbExclamation

'Ocultamiento de Formulario
    Unload Me
        
End If
End If
Exit Sub
End Sub

Private Sub UserForm_Initialize()
Me.TxtNACIMIENTO.SetFocus
End Sub

sin embargo  al agregar 

Me.TxtNACIMIENTO.Value = Format(Me.TxtNACIMIENTO.Value, "dd/mm/yyyy")
Range("D16").Value = Me.TxtNACIMIENTO
Me.TxtINGRESO.Value = Format(Me.TxtINGRESO.Value, "dd/mm/yyyy")
Range("G16").Value = Me.TxtINGRESO
Me.TxtACCIDENTE.Value = Format(Me.TxtACCIDENTE.Value, "dd/mm/yyyy")
Range("I16").Value = Me.TxtACCIDENTE

y remover 

TxtNACIMIENTO = "" 
TxtINGRESO = "" 
TxtACCIDENTE = ""

Ya no me es posible que el Formulario Fechas (fmrfechas) se limpie y oculte automáticamente una vez hago click en el Botón Registrar (CmdREGISTRAR) teniendo que hacerlo manualmente a pesar de tener activa la sección de código

Unload Me

respecto de este punto 

En 21/12/2023 at 15:11 , Israel Cassales dijo:

Pregunta 01: Para que el formulario Fmrfechas solo se muestre cuando el usuario y la clave sean correctos, puedes agregar una validación en tu macro.

Private Sub CmdACEPTAR_Click()
    If TxtUSUARIO.Value = "" Or TxtCLAVE.Value = "" Then
        MsgBox ("Usuario o Clave Vacíos"), vbExclamation
    ElseIf Not Module1.BotonAceptar(TxtUSUARIO.Value, TxtCLAVE.Value) Then
        MsgBox ("Usuario o Clave Incorrectos"), vbExclamation
    Else
        Fmrfechas.Show
    End If
End Sub

Este código, Module1.BotonAceptar debería ser una función que reciba el usuario y la clave, y devuelva True si son correctos y False en caso contrario.

No me arroja el resultado esperado sino que me devuelve un Error de Compilación que no se como resolver

Adjunto el archivo para que pueda revisar y darme respuesta mas adecuadamente.

Usuario: Prueba

Clave: Prueba12345

PRUEBA.xlsm

publicado

Saludos Exceler C quedo HIPER GENIAL solo le veo dos detallitos el primero que cuando introduzco datos erróneos de Usuario y Clave me devuelve dos MsgBox y lo segundo que no comente anteriormente ya que lo "solucione ingeniosamente" colocando el mismo Msgbox "Datos Incompletos Formato de Fecha No Admitido" para ambos eventos  en el  frmfechas al no saber de donde provenía el error 

'Campos Vacios o Formato de Fecha No Admitido
If Not IsDate(TxtNACIMIENTO.Value) Or Not IsDate(TxtINGRESO.Value) Or Not IsDate(TxtACCIDENTE.Value) Then
        MsgBox ("Datos Incompletos o Formato de Fecha No Admitido"), vbExclamation
    ElseIf TxtNACIMIENTO.Value = "" Or TxtINGRESO.Value = "" Or TxtACCIDENTE.Value = "" Then
        MsgBox ("Datos Incompletos o Formato de Fecha No Admitido"), vbExclamation

Sin embargo en ambos casos estas líneas de código deberían detectar ambos eventos por separado  es decir 

"Datos Incompletos: Faltan Campos por Rellenar"

"Datos Erróneos: Formato de Fecha No Admitido"

'Campos Vacios o Formato de Fecha No Admitido
If Not IsDate(TxtNACIMIENTO.Value) Or Not IsDate(TxtINGRESO.Value) Or Not IsDate(TxtACCIDENTE.Value) Then
        MsgBox ("Datos Erróneos: Formato de Fecha No Admitido"), vbExclamation
    ElseIf TxtNACIMIENTO.Value = "" Or TxtINGRESO.Value = "" Or TxtACCIDENTE.Value = "" Then
        MsgBox ("Datos Incompletos: Faltan Campos por Rellenar"), vbExclamation

en cuanto a su ofrecimiento

hace 1 hora, JSDJSD dijo:

Quedaría algo como estoimage.thumb.gif.d329658100ef5c8c72a963da512c3eec.gif

De verdad me gastaría y en lo que defina el resto de las variables del proyecto y la configuración del tercer y ultimo  formulario  con gusto le contactare por este medio para hacerlo posible.

Agradecido por su gentil colaboración en todas mis inquietudes 

PRUEBA.xlsm

publicado

Supongo que en tu archivo original tendrás una hoja. Con los datos de clientes, sería interesante que subieras el archivo con esa hoja, aunque borres los datos y pongas algunos ficticios, es para ver la estructura de la misma, esto simplificaría mucho a la hora de introducir los datos en el formulario

publicado (editado)
En 7/1/2024 at 18:00 , JSDJSD dijo:

Supongo que en tu archivo original tendrás una hoja. Con los datos de clientes, sería interesante que subieras el archivo con esa hoja, aunque borres los datos y pongas algunos ficticios, es para ver la estructura de la misma, esto simplificaría mucho a la hora de introducir los datos en el formulario

Hola JSDJSD espero estés bien a que te refieres exactamente cuando me indicas "en tu archivo original tendrás una hoja. Con los datos de clientes" (no se mucho de programación y desconozco la jerga y el lenguaje técnico ) te explico lo siguiente la información que se vacía en el archivo y sus formularios proviene de un reporte que se hace a una institución de estado de acá de mi país cuyo sistema online me emite un reporte en formato PDF el cual por normativa legal debo imprimir y archivar y es de ese único ejemplar del cual extraigo la información .

En otro orden de ideas como le comente en mi ultimo mensaje ya definí el contenido del tercer formulario que por ahora voy a requerir utilizar como se habrá podrá fijar tengo una lista desplegable en la Celda I8 de la Sheet8 (HOME) la cual contiene cinco ítems: Iletrado, Primaria, Secundaria, Técnica y Superior, de la cual requiero que cuando se seleccione uno de esos ítems aparezca automáticamente el Formulario Nivel (frmnivel) el cual está compuesto por el ComboBox (CombLISTA) que debe mostrar los siguientes ítems: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 y Completa, además de los OptionButton (OptGRADO, OptTRIMESTRE, OptSEMESTRE y OptAÑO)

Concretamente requiero saber si es posible que mediante una macro al elegir los ítems de la lista desplegable de la Celda I8 se cumplan las siguientes condiciones en el Formulario Nivel (frmnivel):

1.       Iletrado: el ComboBox (CombLISTA) solo debe mostrar el item 0 y no se podrán seleccionar ninguno de los OptionButton.

2.       Primaria: el ComboBox (CombLISTA) solo debe mostrar los ítems 1er, 2do, 3er, 4to, 5to, 6to y Completa:

  • En caso de elegir Completa: no se podrán seleccionar ninguno de los OptionButton.
  • En caso de elegir 1er, 2do, 3er, 4to, 5to, 6to solo se podrá seleccionar el OptionButton: OptGRADO

3.       Secundaria: el ComboBox (CombLISTA) solo debe mostrar los ítems 7mo, 8vo, 9no, 10mo, 11er, 12do y Completa:

  •  En caso de elegir Completa: no se podrán seleccionar ninguno de los OptionButton.
  •  En caso de elegir 7mo, 8vo, 9no, 10mo, 11er, 12do solo se podrá seleccionar el OptionButton: OptGRADO

4.       Técnica: el ComboBox (CombLISTA) solo debe mostrar los ítems 1er, 2do, 3er, 4to, 5to, 6to, 7mo, 8vo, 9no, 10mo, 11er, 12do y Completa:

  • En caso de elegir Completa: no se podrán seleccionar ninguno de los OptionButton.
  • En caso de elegir 1er, 2do, 3er, 4to, 5to, 6to, 7mo, 8vo, 9no, 10mo, 11er, 12do solo se podrán seleccionar los OptionButton: OptTRIMESTRE, OptSEMESTRE.

5.       Superior: el ComboBox (CombLISTA) solo debe mostrar los ítems 1er, 2do, 3er, 4to, 5to, 6to, 7mo, 8vo, 9no, 10mo, 11er, 12do, 13er, 14to, 15to, 16to, 17mo, 18vo, 19no, 20mo y Completa:

  • En caso de elegir Completa: no se podrán seleccionar ninguno de los OptionButton.
  • En caso de elegir 1er, 2do, 3er, 4to, 5to, 6to, 7mo, 8vo, 9no, 10mo, 11er, 12do, 13er, 14to, 15to, 16to, 17mo, 18vo, 19no, 20mo solo se podrán seleccionar los OptionButton: OptTRIMESTRE, OptSEMESTRE y OptAÑO.

Una vez elegido el Item en el ComboBox y seleccionado el OptionButton correspondiente (en los casos que aplique) la información proveniente de ambos debe de concatenarse separada por un espacio (Ejemplo: 7mo Grado) y registrarse en la Celda I12 de la Sheet8 (HOME) al hacer click en el Botón Registrar (CmdREGISTRAR) ocultándose automáticamente el Formulario Nivel (frmnivel) al registrar la información.

Adjunto el archivo para que pueda revisar y darme respuesta mas adecuadamente.

Usuario: Prueba

Clave: Prueba12345

PRUEBA.xlsm

Editado el por jues
publicado
En 7/1/2024 at 17:55 , JSDJSD dijo:

Mañana intento sacar un rato para acabarlo 

solventado 

Option Explicit

Sub AlAbrirLibro(): frmlogin.Show: End Sub

Sub BotonAceptar()

'Validacion de Usuario y Clave
    If frmlogin.TxtUSUARIO.Value = "" Or frmlogin.TxtCLAVE.Value = "" Then
        MsgBox "Ingrese Usuario y Clave.", vbExclamation
        frmlogin.TxtUSUARIO.SetFocus
        Exit Sub
    End If
    
    Dim RangoUSUARIO As Range
    Dim USUARIO As Range
    Dim Senal As Boolean
    
    Set RangoUSUARIO = Sheet12.ListObjects("USUARIOS").ListColumns(1).DataBodyRange
    Senal = False
    For Each USUARIO In RangoUSUARIO
        With frmlogin
            If USUARIO.Value = .TxtUSUARIO.Value And USUARIO.Offset(0, 1).Value = .TxtCLAVE.Value Then
                Senal = True
                Application.Visible = True
                Dim RangoVer As Range
                Dim HojaPrivi As Range
                Dim HojaLibro As Worksheet
                Set RangoVer = Sheet12.ListObjects("PRIVILEGIOS").ListColumns(1).DataBodyRange
                For Each HojaLibro In Application.ActiveWorkbook.Worksheets
                    For Each HojaPrivi In RangoVer
                        If HojaPrivi.Value = HojaLibro.CodeName And _
                            HojaPrivi.Offset(0, 1).Value = frmlogin.TxtUSUARIO.Value Then
                            HojaLibro.Visible = xlSheetVisible
                        End If
                    Next HojaPrivi
                Next HojaLibro
                Unload frmlogin
                frmfechas.Show
                Exit For
            End If
        End With
    Next USUARIO
    
    If Not Senal Then
        frmlogin.TxtUSUARIO.Value = ""
        frmlogin.TxtCLAVE.Value = ""
        MsgBox "Usuario o Clave Incorrectas.", vbExclamation
        frmlogin.TxtUSUARIO.SetFocus
    End If
End Sub

 

publicado

en cuanto tengas oportunidad recuerda revisar 

En 7/1/2024 at 17:45 , jues dijo:

Saludos Exceler C quedo HIPER GENIAL solo le veo dos detallitos el primero que cuando introduzco datos erróneos de Usuario y Clave me devuelve dos MsgBox y lo segundo que no comente anteriormente ya que lo "solucione ingeniosamente" colocando el mismo Msgbox "Datos Incompletos Formato de Fecha No Admitido" para ambos eventos  en el  frmfechas al no saber de donde provenía el error 

'Campos Vacios o Formato de Fecha No Admitido
If Not IsDate(TxtNACIMIENTO.Value) Or Not IsDate(TxtINGRESO.Value) Or Not IsDate(TxtACCIDENTE.Value) Then
        MsgBox ("Datos Incompletos o Formato de Fecha No Admitido"), vbExclamation
    ElseIf TxtNACIMIENTO.Value = "" Or TxtINGRESO.Value = "" Or TxtACCIDENTE.Value = "" Then
        MsgBox ("Datos Incompletos o Formato de Fecha No Admitido"), vbExclamation

Sin embargo en ambos casos estas líneas de código deberían detectar ambos eventos por separado  es decir 

"Datos Incompletos: Faltan Campos por Rellenar"

"Datos Erróneos: Formato de Fecha No Admitido"

'Campos Vacios o Formato de Fecha No Admitido
If Not IsDate(TxtNACIMIENTO.Value) Or Not IsDate(TxtINGRESO.Value) Or Not IsDate(TxtACCIDENTE.Value) Then
        MsgBox ("Datos Erróneos: Formato de Fecha No Admitido"), vbExclamation
    ElseIf TxtNACIMIENTO.Value = "" Or TxtINGRESO.Value = "" Or TxtACCIDENTE.Value = "" Then
        MsgBox ("Datos Incompletos: Faltan Campos por Rellenar"), vbExclamation

en cuanto a su ofrecimiento

De verdad me gastaría y en lo que defina el resto de las variables del proyecto y la configuración del tercer y ultimo  formulario  con gusto le contactare por este medio para hacerlo posible.

Agradecido por su gentil colaboración en todas mis inquietudes 

PRUEBA.xlsm 62.15 kB · 1 descarga

y esto también 

hace 5 horas, jues dijo:

Hola JSDJSD espero estés bien a que te refieres exactamente cuando me indicas "en tu archivo original tendrás una hoja. Con los datos de clientes" (no se mucho de programación y desconozco la jerga y el lenguaje técnico ) te explico lo siguiente la información que se vacía en el archivo y sus formularios proviene de un reporte que se hace a una institución de estado de acá de mi país cuyo sistema online me emite un reporte en formato PDF el cual por normativa legal debo imprimir y archivar y es de ese único ejemplar del cual extraigo la información .

En otro orden de ideas como le comente en mi ultimo mensaje ya definí el contenido del tercer formulario que por ahora voy a requerir utilizar como se habrá podrá fijar tengo una lista desplegable en la Celda I8 de la Sheet8 (HOME) la cual contiene cinco ítems: Iletrado, Primaria, Secundaria, Técnica y Superior, de la cual requiero que cuando se seleccione uno de esos ítems aparezca automáticamente el Formulario Nivel (frmnivel) el cual está compuesto por el ComboBox (CombLISTA) que debe mostrar los siguientes ítems: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 y Completa, además de los OptionButton (OptGRADO, OptTRIMESTRE, OptSEMESTRE y OptAÑO)

Concretamente requiero saber si es posible que mediante una macro al elegir los ítems de la lista desplegable de la Celda I8 se cumplan las siguientes condiciones en el Formulario Nivel (frmnivel):

1.       Iletrado: el ComboBox (CombLISTA) solo debe mostrar el item 0 y no se podrán seleccionar ninguno de los OptionButton.

2.       Primaria: el ComboBox (CombLISTA) solo debe mostrar los ítems 1er, 2do, 3er, 4to, 5to, 6to y Completa:

  • En caso de elegir Completa: no se podrán seleccionar ninguno de los OptionButton.
  • En caso de elegir 1er, 2do, 3er, 4to, 5to, 6to solo se podrá seleccionar el OptionButton: OptGRADO

3.       Secundaria: el ComboBox (CombLISTA) solo debe mostrar los ítems 7mo, 8vo, 9no, 10mo, 11er, 12do y Completa:

  •  En caso de elegir Completa: no se podrán seleccionar ninguno de los OptionButton.
  •  En caso de elegir 7mo, 8vo, 9no, 10mo, 11er, 12do solo se podrá seleccionar el OptionButton: OptGRADO

4.       Técnica: el ComboBox (CombLISTA) solo debe mostrar los ítems 1er, 2do, 3er, 4to, 5to, 6to, 7mo, 8vo, 9no, 10mo, 11er, 12do y Completa:

  • En caso de elegir Completa: no se podrán seleccionar ninguno de los OptionButton.
  • En caso de elegir 1er, 2do, 3er, 4to, 5to, 6to, 7mo, 8vo, 9no, 10mo, 11er, 12do solo se podrán seleccionar los OptionButton: OptTRIMESTRE, OptSEMESTRE.

5.       Superior: el ComboBox (CombLISTA) solo debe mostrar los ítems 1er, 2do, 3er, 4to, 5to, 6to, 7mo, 8vo, 9no, 10mo, 11er, 12do, 13er, 14to, 15to, 16to, 17mo, 18vo, 19no, 20mo y Completa:

  • En caso de elegir Completa: no se podrán seleccionar ninguno de los OptionButton.
  • En caso de elegir 1er, 2do, 3er, 4to, 5to, 6to, 7mo, 8vo, 9no, 10mo, 11er, 12do, 13er, 14to, 15to, 16to, 17mo, 18vo, 19no, 20mo solo se podrán seleccionar los OptionButton: OptTRIMESTRE, OptSEMESTRE y OptAÑO.

Una vez elegido el Item en el ComboBox y seleccionado el OptionButton correspondiente (en los casos que aplique) la información proveniente de ambos debe de concatenarse separada por un espacio (Ejemplo: 7mo Grado) y registrarse en la Celda I12 de la Sheet8 (HOME) al hacer click en el Botón Registrar (CmdREGISTRAR) ocultándose automáticamente el Formulario Nivel (frmnivel) al registrar la información.

Adjunto el archivo para que pueda revisar y darme respuesta mas adecuadamente.

Usuario: Prueba

Clave: Prueba12345

PRUEBA.xlsm 63.33 kB · 0 descargas

Agradecido como siempre 

publicado
hace 7 horas, jues dijo:

Hola JSDJSD espero estés bien a que te refieres exactamente cuando me indicas "en tu archivo original tendrás una hoja. Con los datos de clientes" (no se mucho de programación y desconozco la jerga y el lenguaje técnico ) te explico lo siguiente la información que se vacía en el archivo y sus formularios proviene de un reporte que se hace a una institución de estado de acá de mi país cuyo sistema online me emite un reporte en formato PDF el cual por normativa legal debo imprimir y archivar y es de ese único ejemplar del cual extraigo la información .

En otro orden de ideas como le comente en mi ultimo mensaje ya definí el contenido del tercer formulario que por ahora voy a requerir utilizar como se habrá podrá fijar tengo una lista desplegable en la Celda I8 de la Sheet8 (HOME) la cual contiene cinco ítems: Iletrado, Primaria, Secundaria, Técnica y Superior, de la cual requiero que cuando se seleccione uno de esos ítems aparezca automáticamente el Formulario Nivel (frmnivel) el cual está compuesto por el ComboBox (CombLISTA) que debe mostrar los siguientes ítems: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 y Completa, además de los OptionButton (OptGRADO, OptTRIMESTRE, OptSEMESTRE y OptAÑO)

Concretamente requiero saber si es posible que mediante una macro al elegir los ítems de la lista desplegable de la Celda I8 se cumplan las siguientes condiciones en el Formulario Nivel (frmnivel):

1.       Iletrado: el ComboBox (CombLISTA) solo debe mostrar el item 0 y no se podrán seleccionar ninguno de los OptionButton.

2.       Primaria: el ComboBox (CombLISTA) solo debe mostrar los ítems 1er, 2do, 3er, 4to, 5to, 6to y Completa:

  • En caso de elegir Completa: no se podrán seleccionar ninguno de los OptionButton.
  • En caso de elegir 1er, 2do, 3er, 4to, 5to, 6to solo se podrá seleccionar el OptionButton: OptGRADO

3.       Secundaria: el ComboBox (CombLISTA) solo debe mostrar los ítems 7mo, 8vo, 9no, 10mo, 11er, 12do y Completa:

  •  En caso de elegir Completa: no se podrán seleccionar ninguno de los OptionButton.
  •  En caso de elegir 7mo, 8vo, 9no, 10mo, 11er, 12do solo se podrá seleccionar el OptionButton: OptGRADO

4.       Técnica: el ComboBox (CombLISTA) solo debe mostrar los ítems 1er, 2do, 3er, 4to, 5to, 6to, 7mo, 8vo, 9no, 10mo, 11er, 12do y Completa:

  • En caso de elegir Completa: no se podrán seleccionar ninguno de los OptionButton.
  • En caso de elegir 1er, 2do, 3er, 4to, 5to, 6to, 7mo, 8vo, 9no, 10mo, 11er, 12do solo se podrán seleccionar los OptionButton: OptTRIMESTRE, OptSEMESTRE.

5.       Superior: el ComboBox (CombLISTA) solo debe mostrar los ítems 1er, 2do, 3er, 4to, 5to, 6to, 7mo, 8vo, 9no, 10mo, 11er, 12do, 13er, 14to, 15to, 16to, 17mo, 18vo, 19no, 20mo y Completa:

  • En caso de elegir Completa: no se podrán seleccionar ninguno de los OptionButton.
  • En caso de elegir 1er, 2do, 3er, 4to, 5to, 6to, 7mo, 8vo, 9no, 10mo, 11er, 12do, 13er, 14to, 15to, 16to, 17mo, 18vo, 19no, 20mo solo se podrán seleccionar los OptionButton: OptTRIMESTRE, OptSEMESTRE y OptAÑO.

Una vez elegido el Item en el ComboBox y seleccionado el OptionButton correspondiente (en los casos que aplique) la información proveniente de ambos debe de concatenarse separada por un espacio (Ejemplo: 7mo Grado) y registrarse en la Celda I12 de la Sheet8 (HOME) al hacer click en el Botón Registrar (CmdREGISTRAR) ocultándose automáticamente el Formulario Nivel (frmnivel) al registrar la información.

Adjunto el archivo para que pueda revisar y darme respuesta mas adecuadamente.

Usuario: Prueba

Clave: Prueba12345

PRUEBA.xlsm 63.33 kB · 0 descargas

saludos JSDJSD espero estés bien alguien me hizo llegar estas líneas de código pero no entiendo como hacerlas funcionales mucho te sabre agradecer si me puedes ayudar

Option Explicit

Private Sub UserForm_Initialize()

    Me.CombLISTA.AddItem "0"
    Me.CombLISTA.AddItem "1er"
    Me.CombLISTA.AddItem "2do"
    Me.CombLISTA.AddItem "3er"
    Me.CombLISTA.AddItem "4to"
    Me.CombLISTA.AddItem "5to"
    Me.CombLISTA.AddItem "6to"
    Me.CombLISTA.AddItem "7mo"
    Me.CombLISTA.AddItem "8vo"
    Me.CombLISTA.AddItem "9no"
    Me.CombLISTA.AddItem "10mo"
    Me.CombLISTA.AddItem "11er"
    Me.CombLISTA.AddItem "12do"
    Me.CombLISTA.AddItem "13er"
    Me.CombLISTA.AddItem "14to"
    Me.CombLISTA.AddItem "15to"
    Me.CombLISTA.AddItem "16to"
    Me.CombLISTA.AddItem "17mo"
    Me.CombLISTA.AddItem "18vo"
    Me.CombLISTA.AddItem "19no"
    Me.CombLISTA.AddItem "20mo"
    Me.CombLISTA.AddItem "Completa"

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$I$8" Then
        ShowHideNivelForm
    End If
End Sub

Sub ShowHideNivelForm()
    Dim nivelForm As Object
    Set nivelForm = Hoja("HOME").frmnivel

    'Su lógica para mostrar/ocultar el formulario de Nivel según el elemento seleccionado en la celda I8 va aquí
    'Borrar selecciones anteriores en Formulario Nivel
    
    nivelForm.CombLISTA.Clear
    nivelForm.OptGRADO.Value = False
    nivelForm.OptTRIMESTRE.Value = False
    nivelForm.OptSEMESTRE.Value = False
    nivelForm.OptAÑO.Value = False
    nivelForm.OptTRIMESTRE.Value = False
    nivelForm.OptSEMESTRE.Value = False
    nivelForm.OptAÑO.Value = False

    'Su lógica para completar CombLISTA y configurar OptionButtons según el elemento seleccionado va aquí
    'Mostrar u ocultar el formulario de Nivel según las condiciones
    
    If 'Tu condición para mostrar el Formulario de Nivel va aquí' Then
        frmnivel.Show
    Else
        frmnivel.Hide
    End If
End Sub

Sub RegisterInfo()
    Dim frmnivel As Object
    Set frmnivel = Hoja("HOME").frmnivel

   'Concatenar y registrar información en la celda I12
    Dim info As String
    info = frmnivel.CombLISTA.Value & " " & GetSelectedOptionButton(frmnivel)
    Hoja("HOME").Range("I12").Value = info

   'Ocultar formulario de Nivel después de registrar información
    frmnivel.Hide
End Sub

Function GetSelectedOptionButton(nivelForm As Object) As String
    'Su lógica para determinar el botón de opción seleccionado va aquí
    'Devuelve la información concatenada basada en el botón de opción seleccionado
End Function

 

 

publicado
En 9/1/2024 at 16:15 , jues dijo:

Hola JSDJSD espero estés bien a que te refieres exactamente cuando me indicas "en tu archivo original tendrás una hoja. Con los datos de clientes" (no se mucho de programación y desconozco la jerga y el lenguaje técnico ) te explico lo siguiente la información que se vacía en el archivo y sus formularios proviene de un reporte que se hace a una institución de estado de acá de mi país cuyo sistema online me emite un reporte en formato PDF el cual por normativa legal debo imprimir y archivar y es de ese único ejemplar del cual extraigo la información .

En otro orden de ideas como le comente en mi ultimo mensaje ya definí el contenido del tercer formulario que por ahora voy a requerir utilizar como se habrá podrá fijar tengo una lista desplegable en la Celda I8 de la Sheet8 (HOME) la cual contiene cinco ítems: Iletrado, Primaria, Secundaria, Técnica y Superior, de la cual requiero que cuando se seleccione uno de esos ítems aparezca automáticamente el Formulario Nivel (frmnivel) el cual está compuesto por el ComboBox (CombLISTA) que debe mostrar los siguientes ítems: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 y Completa, además de los OptionButton (OptGRADO, OptTRIMESTRE, OptSEMESTRE y OptAÑO)

Concretamente requiero saber si es posible que mediante una macro al elegir los ítems de la lista desplegable de la Celda I8 se cumplan las siguientes condiciones en el Formulario Nivel (frmnivel):

1.       Iletrado: el ComboBox (CombLISTA) solo debe mostrar el item 0 y no se podrán seleccionar ninguno de los OptionButton.

2.       Primaria: el ComboBox (CombLISTA) solo debe mostrar los ítems 1er, 2do, 3er, 4to, 5to, 6to y Completa:

  • En caso de elegir Completa: no se podrán seleccionar ninguno de los OptionButton.
  • En caso de elegir 1er, 2do, 3er, 4to, 5to, 6to solo se podrá seleccionar el OptionButton: OptGRADO

3.       Secundaria: el ComboBox (CombLISTA) solo debe mostrar los ítems 7mo, 8vo, 9no, 10mo, 11er, 12do y Completa:

  •  En caso de elegir Completa: no se podrán seleccionar ninguno de los OptionButton.
  •  En caso de elegir 7mo, 8vo, 9no, 10mo, 11er, 12do solo se podrá seleccionar el OptionButton: OptGRADO

4.       Técnica: el ComboBox (CombLISTA) solo debe mostrar los ítems 1er, 2do, 3er, 4to, 5to, 6to, 7mo, 8vo, 9no, 10mo, 11er, 12do y Completa:

  • En caso de elegir Completa: no se podrán seleccionar ninguno de los OptionButton.
  • En caso de elegir 1er, 2do, 3er, 4to, 5to, 6to, 7mo, 8vo, 9no, 10mo, 11er, 12do solo se podrán seleccionar los OptionButton: OptTRIMESTRE, OptSEMESTRE.

5.       Superior: el ComboBox (CombLISTA) solo debe mostrar los ítems 1er, 2do, 3er, 4to, 5to, 6to, 7mo, 8vo, 9no, 10mo, 11er, 12do, 13er, 14to, 15to, 16to, 17mo, 18vo, 19no, 20mo y Completa:

  • En caso de elegir Completa: no se podrán seleccionar ninguno de los OptionButton.
  • En caso de elegir 1er, 2do, 3er, 4to, 5to, 6to, 7mo, 8vo, 9no, 10mo, 11er, 12do, 13er, 14to, 15to, 16to, 17mo, 18vo, 19no, 20mo solo se podrán seleccionar los OptionButton: OptTRIMESTRE, OptSEMESTRE y OptAÑO.

Una vez elegido el Item en el ComboBox y seleccionado el OptionButton correspondiente (en los casos que aplique) la información proveniente de ambos debe de concatenarse separada por un espacio (Ejemplo: 7mo Grado) y registrarse en la Celda I12 de la Sheet8 (HOME) al hacer click en el Botón Registrar (CmdREGISTRAR) ocultándose automáticamente el Formulario Nivel (frmnivel) al registrar la información.

image.gif.6a0446e823b7b9498b423fdc65f47e17.gifProcura hacer consulta por duda, no todo un recetario.

publicado

Lo siento mil disculpas no volverá a ocurrir 

Ahora mismo, JSDJSD dijo:

image.gif.6a0446e823b7b9498b423fdc65f47e17.gifProcura hacer consulta por duda, no todo un recetario.

 

publicado
hace 2 horas, JSDJSD dijo:

Algo así es lo que necesitas ?

image.gif

Exactamente eso es lo que necesito 

publicado

Te subo el archivo pero no está terminado, es decir el formulario para el ingreso de datos te lo he empezado para que tu continúes  e intentes acabarlo, en caso que no lo consigas dilo  y continuamos.image.thumb.gif.921ee51b6b32bcc298a562ca516997b1.gif

Conéctate para comentar

Podrás dejar un comentario después de conectarte



Conéctate ahora
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.