Userform, al ejecutarlo no puedo seleccionar otros libros.

He diseñado un userform, que al abrir excel, oculta la aplicación, a modo que quede como un inicio de sesión, luego de ingresar usuario y contraseña, ejecuta otro userform, "menú principal", con botones controladores de formularios, cada uno abren un libro excel ; aquí es donde surge el inconveniente, los libros se abren pero no puedo acceder a ellos hasta no cerrar el "menú principal"

Código usado para ocultar excel:

En thisworkbook:

Private Sub Workbook_Open()
Application.Windows("Inicio de sesion.xlsm").Visible = False
End Sub

Cree un modulo para que se auto ejecute el userform de inicio de sesión:

Sub Auto_Open()
UserForm1.Show
End Sub

Código para el inicio de sesión:

Private Sub CommandButton1_Click()
Dim USER As String
Dim PASS As String
USER = TextBox1.Text
PASS = TextBox2.Text
If USER = "USUARIO" And PASS = "CONTRASEÑA" Then
ThisWorkbook.Save
UserForm2.Show
Else
ActiveWorkbook.Close
End If
Me.Hide
End Sub

Ejecuta el Menú principal y luego los botones abren los libros que corresponden mediante la instrucción:

Private Sub V2013_Click()
On Error Resume Next
Workbooks.Open Filename:="Nombre de archivo"
Me.Hide
End Sub

y entonces ahí sucede el inconveniente, se abren los libros pero no puedo trabajar con ellos si no cierro todos los userform.

1 respuesta

Respuesta
1

H o l a:

Una opción es que antes de abrir el archivo, cierres el formulario:

Private Sub V2013_Click()
    Unload Me
    Workbooks.Open Filename:="Nombre de archivo"
End Sub

Y también antes de abrir el formulario, cierres el primer formulario:

Private Sub CommandButton1_Click()
    Dim USER As String
    Dim PASS As String
    USER = TextBox1.Text
    PASS = TextBox2.Text
    If USER = "USUARIO" And PASS = "CONTRASEÑA" Then
        ThisWorkbook.Save
        Unload Me
        UserForm2.Show
    Else
        ActiveWorkbook.Close
    End If
End Sub

Pero lo anterior, solamente te permitirá una opción, ya que los formularios se cerrarán, pero tendrás tu libro abierto.


Otra opción es que en las propiedades de todos los userform cambies la propiedad de ShowModal a False

De esa forma cuando se abra tu archivo, podrás utilizar el libro, pero tendrás en primer plano el formulario.

Para minimizar los formulario y puedas tener en primer plano tu archivo que recién abriste, coloca el siguiente código al inicio de cada formulario:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Const GWL_STYLE As Long = (-16)
'
Private Sub UserForm_Initialize()
    Dim lngMyHandle As Long, lngCurrentStyle As Long, lngNewStyle As Long
    lngMyHandle = FindWindow("THUNDERDFRAME", Me.Caption)
    lngCurrentStyle = GetWindowLong(lngMyHandle, GWL_STYLE)
    lngNewStyle = lngCurrentStyle Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX
    SetWindowLong lngMyHandle, GWL_STYLE, lngNewStyle
End Sub

Con eso podrás minimizar los formulario y podrás trabajar en tu hoja de excel.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Dante, muchas gracias por tu tiempo, te comento que ninguna de las opciones es lo que estaría necesitando.

A la cual podría darle un uso, pero no es la idea, seria a la ultima opción, la cual activa la opción de minimizar; pero no es lo que me gustaría.

Lo que pretendo es que al hacer click en cada botón controlador me direccione al archivo correcto y automáticamente me muestre ese formulario, actualmente como esta, abre el archivo y lo deja minimizado y para poder trabajar en el debo cerrar el libro donde están los userform.

Tienes que poner el userform en ShowModal = false, de esa forma puedes cambiarte al libro. La otra opción es que cierres el userform y actives el libro que necesitas. Si el formulario está en ejecución no puedes realizar otras tareas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas