2012-01-28 36 views
8

¿Hay alguien aquí todavía programando VBA?Cómo ocultar el control de botón en VBA

estoy tratando de conseguir que este código funcione

Private Sub button3_click() 

    'hide main buttons 
    button1.Visible = False 
    button2.Visible = False 
    button3.Visible = False 

    'show submenu buttons 
    button4.Visible = True; 
    button5.Visible = True; 

End Sub 

Lo que estoy tratando de hacer, básicamente, es que tengo un formulario principal que tiene 5 botones de control principales. 2 de ellos están ocultos en el inicio. Entonces, cuando hago clic en el botón 3, quiero ocultar los primeros 3 botones principales y "mostrar" los otros dos. , se intenta ejecutar este evento, que tiene un error

"Tiempo de ejecución Error 2165 - No se puede ocultar un control que tiene el foco".

¿Alguien se ha encontrado antes con este aspecto de la programación? Estoy seguro de que es factible. Simplemente no entiendo lo que salió mal aquí ...

+0

Gracias a todos. Todas sus sugerencias han sido probadas, ¡funcionan! Debería haber pensado que hay una manera de hacer que esta simple funcionalidad funcione, si es posible 'pensar fuera del cuadrado' cuando se codifica. Aclamaciones. :) – awongCM

Respuesta

7

cambiar el foco a uno de los control visible, antes de ocultar el actual

Private Sub button3_click() 

    'show submenu buttons 
    button4.Visible = True 
    button5.Visible = True 

    DoEvents   'execute any pending events, to make sure the button 4 and 5 are really visible 
    button4.SetFocus 'change the focus to a now visible control 
    DoEvents   'execute any pending events, to make sure that button4 really has the focus 

    'now you can hide the other buttons 

    'hide main buttons 
    button1.Visible = False 
    button2.Visible = False 
    button3.Visible = False 

End Sub 

Tal vez puede omitir el comando DoEvents, usted debe tratar

Cuestiones relacionadas