Как скрыть управление кнопкой в VBA

есть ли здесь кто-нибудь, все еще программирующий VBA?

Я пытаюсь заставить этот код работать

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

то, что я пытаюсь сделать в основном, это то, что у меня есть основная форма, которая имеет 5 основных кнопок управления. 2 из них скрыты при запуске. Поэтому, когда я нажимаю кнопку 3, я хочу скрыть первые 3 основные кнопки и "отобразить" два других. При попытке выполнить это событие я получил ошибку

"ошибка выполнения 2165 - вы не можете скрыть элемент управления, который имеет фокус".

кто-нибудь сталкивался с этим аспектом программирования? Я уверен, что это выполнимо. Я просто не понимаю, что пошло не так...

2 ответов


измените фокус на один из видимых элементов управления, прежде чем скрывать текущий

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

возможно, вы можете пропустить команду DoEvents, вы должны попробовать


Я бы подумал, что ошибка была достаточно явной. Перед запуском кода переместите фокус на элемент управления, который вы не пытаетесь скрыть. Кроме того, рассмотрим Me : http://msdn.microsoft.com/en-us/library/aa223099 (v=офис.11).aspx