ユーザーフォームを非表示にする(Hideメソッド)
VBA のプログラムの中からユーザーフォームを非表示にする方法です。 Unload 文を使うとユーザーフォームがメモリから削除されてしまいますが、 Hide メソッドを使用する一時的に非表示にして、また元の状態のまま再表示させることができます。ここでは Excel のユーザーフォームで VBA を使ってユーザーフォームを非表示にする方法について解説します。
(Last modified: )
ユーザーフォームを非表示にする
ユーザーフォームを VBA のプログラムの中から非表示にするには Hide メソッドを使用します。書式は次のとおりです。
object.Hide
対象のオブジェクトが非表示になります。例えば表示されている UserForm1 オブジェクトを非表示にする次のように記述します。
Option Explicit
Sub テスト()
UserForm1.Hide
End Sub
非表示になっているユーザーフォームを再び表示するには Show メソッドを使用します。
Option Explicit
Sub テスト()
UserForm1.Show
End Sub
Show メソッドに関する詳しい使い方については「ユーザーフォームを表示する(Load文,Showメソッド)」を参照されてください。
それでは簡単なサンプルを作成して試してみます。
あらかじめ次のようなユーザーフォームを作成しています。ユーザーフォームのオブジェクト名は UserForm1 です。このユーザーフォームにはテキストボックスとコマンドボタンを設置しています。コマンドボタンの Caption プロパティの値を使ってコマンドボタンに表示される文字列を「Hide」に変更しています。またオブジェクト名は HideButton に変更してあります。
先ほどとは別にもう一つユーザーフォームを作成しています。ユーザーフォームのオブジェクト名は UserForm2 です。このユーザーフォームにはコマンドボタンを設置しています。コマンドボタンの Caption プロパティの値を使ってコマンドボタンに表示される文字列を「Show」に変更しています。またオブジェクト名は ShowButton に変更してあります。
標準モジュールの中のモジュールに次のようにプログラムを記述しました。(モジュールを追加してコードウィンドウを表示する方法については「VBAプログラムの作成と実行」を参照されてください)。
Option Explicit
Sub テスト()
UserForm2.Show
End Sub
UserForm1 の方のユーザーフォームでコマンドボタンをダブルクリックしてください。次のようにコマンドボタンに対する Click イベントのイベントプロシージャが表示されます。
イベントプロシージャに次のように記述してください。
Option Explicit
Private Sub HideButton_Click()
UserForm1.Hide
End Sub
今度は UserForm2 の方のユーザーフォームでコマンドボタンをダブルクリックしてください。次のようにコマンドボタンに対する Click イベントのイベントプロシージャが表示されます。
イベントプロシージャに次のように記述してください。
Option Explicit
Private Sub ShowButton_Click()
UserForm1.Show
End Sub
それではプログラムを実行してみます。「Sub/ユーザーフォームの実行」をクリックしてください。
プログラムが実行されてユーザーフォーム2が表示されました。
ユーザーフォーム2に設置されている「Show」コマンドボタンをクリックしてください。ユーザーフォーム1が表示されます。
ユーザーフォーム1のテキストボックスに何か入力したあとで「Hide」コマンドボタンをクリックしてください。ユーザーフォーム2が非表示になります。
それではあらためてユーザーフォーム2に設置されている「Show」コマンドボタンをクリックしてください。ユーザーフォーム1が表示されます。このとき非表示になる前にテキストボックスに入力されていた内容はそのままの状態で表示されます。
このように Unload 文でユーザーフォームを閉じてしまう場合と比べて Hide メソッドを使用した場合は一時的に非表示になっているだけなので、再度表示した場合は元の状態がそのまま残っています。
-- --
Excel のユーザーフォームで VBA を使ってユーザーフォームを非表示にする方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。