ユーザーフォームを非表示にする(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 に変更してあります。

ユーザーフォームを非表示にする(1)

先ほどとは別にもう一つユーザーフォームを作成しています。ユーザーフォームのオブジェクト名は UserForm2 です。このユーザーフォームにはコマンドボタンを設置しています。コマンドボタンの Caption プロパティの値を使ってコマンドボタンに表示される文字列を「Show」に変更しています。またオブジェクト名は ShowButton に変更してあります。

ユーザーフォームを非表示にする(2)

標準モジュールの中のモジュールに次のようにプログラムを記述しました。(モジュールを追加してコードウィンドウを表示する方法については「VBAプログラムの作成と実行」を参照されてください)。

Option Explicit

Sub テスト()
    UserForm2.Show
End Sub

ユーザーフォームを非表示にする(3)

UserForm1 の方のユーザーフォームでコマンドボタンをダブルクリックしてください。次のようにコマンドボタンに対する Click イベントのイベントプロシージャが表示されます。

ユーザーフォームを非表示にする(4)

ユーザーフォームを非表示にする(5)

イベントプロシージャに次のように記述してください。

Option Explicit

Private Sub HideButton_Click()
    UserForm1.Hide
End Sub

ユーザーフォームを非表示にする(6)

今度は UserForm2 の方のユーザーフォームでコマンドボタンをダブルクリックしてください。次のようにコマンドボタンに対する Click イベントのイベントプロシージャが表示されます。

ユーザーフォームを非表示にする(7)

ユーザーフォームを非表示にする(8)

イベントプロシージャに次のように記述してください。

Option Explicit

Private Sub ShowButton_Click()
    UserForm1.Show
End Sub

ユーザーフォームを非表示にする(9)

それではプログラムを実行してみます。「Sub/ユーザーフォームの実行」をクリックしてください。

ユーザーフォームを非表示にする(10)

プログラムが実行されてユーザーフォーム2が表示されました。

ユーザーフォームを非表示にする(11)

ユーザーフォーム2に設置されている「Show」コマンドボタンをクリックしてください。ユーザーフォーム1が表示されます。

ユーザーフォームを非表示にする(12)

ユーザーフォームを非表示にする(13)

ユーザーフォーム1のテキストボックスに何か入力したあとで「Hide」コマンドボタンをクリックしてください。ユーザーフォーム2が非表示になります。

ユーザーフォームを非表示にする(14)

ユーザーフォームを非表示にする(15)

それではあらためてユーザーフォーム2に設置されている「Show」コマンドボタンをクリックしてください。ユーザーフォーム1が表示されます。このとき非表示になる前にテキストボックスに入力されていた内容はそのままの状態で表示されます。

ユーザーフォームを非表示にする(16)

ユーザーフォームを非表示にする(17)

このように Unload 文でユーザーフォームを閉じてしまう場合と比べて Hide メソッドを使用した場合は一時的に非表示になっているだけなので、再度表示した場合は元の状態がそのまま残っています。

-- --

Excel のユーザーフォームで VBA を使ってユーザーフォームを非表示にする方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。