Habilitar un "Image" de ActiveX Controls en el Editor

Hola que tal experto,
Te molesto para preguntarte lo siguiente:
Estoy en una hoja de excel trabajando con el Editor de Texto de VB, en él tengo 3 "botones" y lo pongo entre comillas por que en realidad son 3 "Images" que funcionan con el evento "click"; ahora bien, uno de estos 3 "botones" uno de ellos sirve para salir del programa o cerrar la el libro de excel pero justo antes de que guarde y cierre el libro tengo la sig. Instrucción: Image1. Visible = False, entonces al volver a abrir el libro, la Image1 no será visible para el usuario.
Al abrir el libro lo primero que aparece es un pequeño formulario que perimte introducir la contraseña de acceso, (y detrás de este formulario se observa en la hoja de cálculo que la Image1 no está, ya que se encuentra "invisible").
Entonces, lo que quiero es que una vez que se escriba la contraseña correcta y dé acceso al libro, vuelva a aparecer la Image1 en la hoja de excel (que aparezca "visible").
Intenté escribir la instrucción Image1. Visible=True en diferentes partes del código, como en el evento Private Sub Workbook_Open(), entre otros, pero al parecer reconoce el objeto Image1, supongo que tiene que ver porque es un "ActiveXControl".
Ojalá puedas ayudarme con este dilema,
De antemano muchas gracias!
Alex Mota.

1 respuesta

Respuesta
1
Y porqué no la pones en el botón del mismo formulario, cuando el usuario introduce la contraseña correcta. Seleccionas la hoja y a la imagen le das la propiedad visible el valor a True, así al mismo tiempo que acierta con la contraseña muestra la imagen
Sheets("Hoja1").Select
Imagen1.Visible=True
Esto como parte final del código del botón de aceptar al introducir la contraseña.
>Un saludo
>Julio
Perdón julio, no me había fijado que ya habías respondido la pregunta.
Ok mira, puse el código hasta el final pero ma manda el error de :
Run-time error '424':
Object required
este es el código que tengo en el botón:
Private Sub CommandButton1_Click()
Dim a As String
   a = TextBox1.Text
        If a = "amota" Then
            Sheets("FORMULARIO").Visible = True ' muestra la hoja
            Sheets("FORMULARIO").Select
            ActiveSheet.Unprotect 'desprotege la hoja
            Unload Me
    Range("G16").Select
    ActiveCell.FormulaR1C1 = a
    Range("B4").Select
        Else
            If a = "mcalixto" Then
               Sheets("FORMULARIO").Visible = True ' muestra la hoja
               Sheets("FORMULARIO").Select
               ActiveSheet.Unprotect 'desprotege la hoja
               Unload Me
    Range("G16").Select
    ActiveCell.FormulaR1C1 = a
    Range("B4").Select
             Else
                 If a = "gruiz" Then
                    Sheets("FORMULARIO").Visible = True ' muestra la hoja
                    Sheets("FORMULARIO").Select
                    ActiveSheet.Unprotect 'desprotege la hoja
               Unload Me
    Range("G16").Select
    ActiveCell.FormulaR1C1 = a
    Range("B4").Select
                 Else
                     If a = "fyañez" Then
                        Sheets("FORMULARIO").Visible = True ' muestra la hoja
                        Sheets("FORMULARIO").Select
                        ActiveSheet.Unprotect 'desprotege la hoja
               Unload Me
    Range("G16").Select
    ActiveCell.FormulaR1C1 = a
    Range("B4").Select
                     Else
                         If a = "agutierrez" Then
                            Sheets("FORMULARIO").Visible = True ' muestra la hoja
                            Sheets("FORMULARIO").Select
                            ActiveSheet.Unprotect 'desprotege la hoja
                Unload Me
    Range("G16").Select
    ActiveCell.FormulaR1C1 = a
    Range("B4").Select
                         Else
                             If a = "pramirez" Then
                                Sheets("FORMULARIO").Visible = True ' muestra la hoja
                                Sheets("FORMULARIO").Select
                                ActiveSheet.Unprotect 'desprotege la hoja
                Unload Me
    Range("G16").Select
    ActiveCell.FormulaR1C1 = a
    Range("B4").Select
                             Else
                                mensaje = MsgBox("Contraseña no válida, por favor intente de nuevo", 48, "Mensaje")
                                Unload Me
                                UserForm2.Show
                             End If
                         End If
                     End If
                 End If
            End If
        End If
'Sheets("FORMULARIO").Select   //  'AQUI PUSE EL CÓDIGO QUE ME ENVIASTE
'Imagen1.Visible = True
 
  End Sub
Muchas gracias julio!
Vamos a ver que me estoy dando cuenta que algo no funciona, ¿la imagen que tienes está dentro de los botones como imagen dentro del botón?
Aclarame esto, y otra cosa, si no pones mi linea de código la macro si funciona correctamente o te sigue lanzando el error.
>Un saludo
>Julio
No, las imágenes están cargadas en objetos "Image" (ActiveXContro) las cuales están insertadas en la hoja "FORMULARIO"., y que tienen algunas actividades en su propiedad "Click", o sea, que están funcionando como botones pero no lo son.
Los formularios que tengo los ocupo para las contraseñas de acceso y dentro de cada uno de ellos hay un botón normal que valida si la contraseña es la correcta.
Y respecto a lo otro, efectivamente, si no pongo tus líneas de código, funciona muy bien pero sigue estando "invisible" la Image1, ya que antes de cerrar el libro, se cambio su propiedad a Image1. Visible=False, recuerdas?
Gracias por tu atención y paciencia!
Alex.
Vale, ese es el problema por el que algunas veces no se te cargan las imágenes al iniciar el libro el problema es que no se manejan muy bien los ActiveX desde Excel, muchas veces por el antivirus que los bloquea, en fin para lo que quieres hacer le pasaste la propiedad visible =false (probablemente en el Close del Libro) pues ahora deberías poner la propiedad visible en el Auto_Open con la condición o condiciones :
Private Sub Workbook_Open()
If Userform1.TextBox1.Value="mcalixto" Or Userform1.Textbox1.Value="agutierrez" Then
Sheets("FORMULARIO").Select
Imagen1.Visible=True
End If
End Sub
Prueba esto y me cuentas asegurate que el valor de la contraseña esta en Textbox1 y si no es así lo cambias.
>Un saludo
>Julio
Mi estimado Julio, te comento que ya logré el objetivo!
La nueva línea de código la metí en el botón del formulario y fue:
a = TextBox1.Text
        If a = "amota" Then
            Sheets("FORMULARIO").Visible = True    ' muestra la hoja
            Sheets("FORMULARIO").Select
            ActiveSheet.Unprotect 'desprotege la hoja
            ActiveSheet.Shapes("Image1").Visible = True       'nueva instruccion

            Unload Me
      End if
El problema era que el programa no reconocía el Control Image como "Image1" nada más, sino que debe de escribirse: ActiveSheet.Shapes("Image1")., al correr una macro mostraba esta sintaxis.
Agradezco tu tiempo ya que me sirvió para abrirme más el panorama y aprender más cosas sobre Visual y Excel.
Ahora solo me queda investigar cómo hacer para que no desaparezcan las imágenes cargadas en los Control Image, cada vez que abro el archivo., pero prácticamente ya estoy del otro lado.
Muchas gracias!
Alex.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas