web-dev-qa-db-ja.com

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つのメインボタンを非表示にし、残りの2つを「再表示」します。このイベントを実行しようとすると、エラーが発生しました

"ランタイムエラー2165-フォーカスのあるコントロールを非表示にすることはできません"。

誰かが以前にプログラミングのこの側面に出くわしたことがありますか?私はそれが実行可能であると確信しています。ここで何が悪かったのかわかりません...

8
awongCM

現在のコントロールを非表示にする前に、フォーカスを表示されているコントロールの1つに変更します

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コマンドをスキップできるかもしれませんが、試してみてください

7
Max

エラーは十分に明白だと思いました。コードを実行する前に、非表示にしようとしていないコントロールにフォーカスを移動します。また、Mehttp://msdn.Microsoft.com/en-us/library/aa223099(v = office.11​​).aspx を検討してください。

1
Fionnuala