ユーザーフォームを非表示にする(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 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。