2012-01-28 22 views
8

C'è qualcuno qui ancora in programmazione VBA?Come nascondere il controllo pulsante in VBA

sto cercando di ottenere questo codice funzioni

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 

Quello che sto cercando di fare è che in fondo Ho una forma principale che ha 5 principali controlli pulsante. 2 di questi sono nascosti all'avvio. Quindi, quando clicco sul pulsante 3, voglio nascondere i primi 3 pulsanti principali e "mostrare" gli altri due. Quando si tenta di eseguire questo evento, ho ottenuto un errore

"Errore di runtime 2165 - Non si può nascondere un controllo che ha il focus".

Qualcuno ha mai incontrato questo aspetto della programmazione? Sono sicuro che sia fattibile. Semplicemente non capisco cosa è andato storto qui ...

+0

Grazie a tutti. Tutti i tuoi suggerimenti sono stati provati - funzionano! Avrei dovuto pensare che c'è un modo per far funzionare questa semplice funzionalità, se si potesse "pensare fuori dal quadrato" durante la codifica. Saluti. :) – awongCM

risposta

7

Cambiare la messa a fuoco per uno dei controllo visibile, prima di nascondere quello attuale

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 

Forse si può saltare il comando DoEvents, si dovrebbe provare

Problemi correlati