Interconexión de Formularios

jues

New Member
Joined
Mar 17, 2023
Messages
15
Office Version
  1. 365
Platform
  1. Windows
saludos amigos
Tengo un pequeño proyecto con dos formularios específicos
VBA Code:
al momento de abrir el archivo aparece el Formulario Login (fmrlogin) en el cual debo de digitar el Usuario (TxtUSUARIO) y Contraseña (TxtCLAVE) pre determinados al hacer haga clic en el Botón Aceptar (CmdACEPTAR) aparece el Formulario Fechas (fmrfechas) en el cual debo de digitar otra información, sin embargo si accidentalmente oprImo el Botón Aceptar (CmdACEPTAR) indistintamente que los campos Usuario (TxtUSUARIO) y Contraseña (TxtCLAVE) estén vacíos , parciamente llenos o con Usuario y Contraseña erróneos iguales me aparece el Formulario Fechas (fmrfechas) el cual solo debería aparecer si y solo si el Usuario y Contraseña son válidos.

Concretamente lo que requiero es que me ayuden con las líneas de código faltantes para si y solo si el Usuario (TxtUSUARIO) y la Contraseña (TxtCLAVE) son válidos sea la única forma que se muestrea el Formulario Fechas (fmrfechas) seguidamente les dejo la macro. con la que actualmente llamo el Formulario.

Private Sub CmdACEPTAR_Click()
Call Module1.BotónAceptar
Fmrfechas.Show
End Sub

Mucho les sabre agradecer al ayuda que me puedan brindar
 

Excel Facts

Format cells as time
Select range and press Ctrl+Shift+2 to format cells as time. (Shift 2 is the @ sign).
Puedes copiar y pegar aqui el código del Module1.BotónAceptar? Puede que necesitaré ver más, pero empezamos con este.
 
Upvote 1
Puedes copiar y pegar aqui el código del Module1.BotónAceptar? Puede que necesitaré ver más, pero empezamos con este.
Buenos días amigo espero estés bien revise con detenimiento mi código y me percate de que tenia errores en los nombres de los Formularios Login (frmlogin) y Fechas (frmfechas) de igual modo detecte por ensayo y error (ya que no se mucho de programación) que al remover frmfechas.Show de la sección de código:

VBA Code:
Private Sub CmdACEPTAR_Click()
Call Module1.BotónAceptar
frmfechas.Show
End Sub

se solvento el problema sin embargo ahora al introducir datos erróneos de Usuario (TxtUSUARIO) y Clave (TxtCLAVE) me devuelve un doble MsgBox indicándome que el "Usuario o Clave Incorrectas seguidamente te adjunto el código del Moduo1 para que lo revises:

Code:
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
            Else
                frmlogin.TxtUSUARIO.Value = ""
                frmlogin.TxtCLAVE.Value = ""
                MsgBox "Usuario o Clave Incorrectas.", vbExclamation
                frmlogin.TxtUSUARIO.SetFocus
            End If
        End With
    Next USUARIO
    
End Sub

En otro orden de ideas me gustaria saber si me puedes ayudar con este otro problema:

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):

Iletrado: el ComboBox (CombLISTA) solo debe mostrar el item 0 y no se podrán seleccionar ninguno de los OptionButton.
  • 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
  • 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
  • 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.
  • 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.
 
Upvote 0
Empezamos con el doble MsgBox.

La clave es el boolean "Senal". No se usaba realmente. Se cambia a "True" si el If sale bien, pero si Senal es True o False, no se hace nada con el valor de todos modos.

Al ser True, el codigo debe de terminar le peticion del Usuario y Clave. Al ser False despues de probar cada todos los usuarios en la region RangoUSUARIO, entonces ya debe de seguir pidiendo Usuario y Clave mediante el frmlogin. En el codigo que presentaste, si la primera pareja examinaba era falso, se borraba el Usuario y Clave del frmlogin y se presentaba el MsgBox, y los valores de Usuario y Clave ya eran elminados para las siguientes pruebas de parejas. El MsgBox tambien se presenta por cada pareja examinada. Puede que tienes dos parejas in al RangoUSUARIO por lo cual se presentaban dos MsgBox?

En este codigo, translade el codigo del "Else" fuera del For Loop, y lo puse en su proprio "If". Si, al examinar todos los usuarios en la region RangoUSUARIO, no sale ninguna pareja correcta, entonces ya se borran los valores y se presenta el frmlogin otra vez. Si alguna pareja acerta, se termina.

VBA Code:
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
 
Upvote 1
Solution
Empezamos con el doble MsgBox.

La clave es el boolean "Senal". No se usaba realmente. Se cambia a "True" si el If sale bien, pero si Senal es True o False, no se hace nada con el valor de todos modos.

Al ser True, el codigo debe de terminar le peticion del Usuario y Clave. Al ser False despues de probar cada todos los usuarios en la region RangoUSUARIO, entonces ya debe de seguir pidiendo Usuario y Clave mediante el frmlogin. En el codigo que presentaste, si la primera pareja examinaba era falso, se borraba el Usuario y Clave del frmlogin y se presentaba el MsgBox, y los valores de Usuario y Clave ya eran elminados para las siguientes pruebas de parejas. El MsgBox tambien se presenta por cada pareja examinada. Puede que tienes dos parejas in al RangoUSUARIO por lo cual se presentaban dos MsgBox?

En este codigo, translade el codigo del "Else" fuera del For Loop, y lo puse en su proprio "If". Si, al examinar todos los usuarios en la region RangoUSUARIO, no sale ninguna pareja correcta, entonces ya se borran los valores y se presenta el frmlogin otra vez. Si alguna pareja acerta, se termina.

VBA Code:
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
Funciona excelentemente Bien
 
Upvote 0
Buenos días amigo espero estés bien revise con detenimiento mi código y me percate de que tenia errores en los nombres de los Formularios Login (frmlogin) y Fechas (frmfechas) de igual modo detecte por ensayo y error (ya que no se mucho de programación) que al remover frmfechas.Show de la sección de código:

VBA Code:
Private Sub CmdACEPTAR_Click()
Call Module1.BotónAceptar
frmfechas.Show
End Sub

se solvento el problema sin embargo ahora al introducir datos erróneos de Usuario (TxtUSUARIO) y Clave (TxtCLAVE) me devuelve un doble MsgBox indicándome que el "Usuario o Clave Incorrectas seguidamente te adjunto el código del Moduo1 para que lo revises:

Code:
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
            Else
                frmlogin.TxtUSUARIO.Value = ""
                frmlogin.TxtCLAVE.Value = ""
                MsgBox "Usuario o Clave Incorrectas.", vbExclamation
                frmlogin.TxtUSUARIO.SetFocus
            End If
        End With
    Next USUARIO
   
End Sub

En otro orden de ideas me gustaria saber si me puedes ayudar con este otro problema:

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):

Iletrado: el ComboBox (CombLISTA) solo debe mostrar el item 0 y no se podrán seleccionar ninguno de los OptionButton.
  • 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
  • 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
  • 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.
  • 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.
cuando le sea posible recuerde darle una irada a esto =)
 
Upvote 0
Buenos días amigo espero estés bien revise con detenimiento mi código y me percate de que tenia errores en los nombres de los Formularios Login (frmlogin) y Fechas (frmfechas) de igual modo detecte por ensayo y error (ya que no se mucho de programación) que al remover frmfechas.Show de la sección de código:

VBA Code:
Private Sub CmdACEPTAR_Click()
Call Module1.BotónAceptar
frmfechas.Show
End Sub

se solvento el problema sin embargo ahora al introducir datos erróneos de Usuario (TxtUSUARIO) y Clave (TxtCLAVE) me devuelve un doble MsgBox indicándome que el "Usuario o Clave Incorrectas seguidamente te adjunto el código del Moduo1 para que lo revises:

Code:
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
            Else
                frmlogin.TxtUSUARIO.Value = ""
                frmlogin.TxtCLAVE.Value = ""
                MsgBox "Usuario o Clave Incorrectas.", vbExclamation
                frmlogin.TxtUSUARIO.SetFocus
            End If
        End With
    Next USUARIO
   
End Sub

En otro orden de ideas me gustaria saber si me puedes ayudar con este otro problema:

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):

Iletrado: el ComboBox (CombLISTA) solo debe mostrar el item 0 y no se podrán seleccionar ninguno de los OptionButton.
  • 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
  • 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
  • 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.
  • 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.

saludos shknbk2 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

VBA Code:
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
 
Upvote 0
Cross-posting (posting the same question in more than one forum) is not against our rules, but the method of doing so is covered by #13 of the Forum Rules.

Be sure to follow & read the link at the end of the rule too!

Cross posted at: Interconnection of Forms & Concatenation of Information
There is no need to repeat the link(s) provided above but if you have posted the question at other places, please provide links to those as well.

If you do cross-post in the future and also provide links, then there shouldn’t be a problem.
 
Upvote 0

Forum statistics

Threads
1,223,888
Messages
6,175,219
Members
452,620
Latest member
dsubash

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top