Excel VBAのユーザーフォームを閉じる方法をご説明します。
ユーザーフォームを閉じる場合、右上の×ボタンで閉じる事も可能ですが、VBAで操作して閉じることも可能です。
ユーザーフォームを閉じる事は非常に簡単ですが、ユーザーフォームはメモリ上から削除されるため、テキストに入力されている情報などのユーザーフォーム上にある情報もすべて削除されますのでご注意ください。
その他のユーザーフォームの作成や操作方法について下記記事をご覧ください。
- ユーザーフォームの作り方と表示方法
- ユーザーフォームのプロパティ一覧と表示方法
- ユーザーフォームのサイズを変更する
- ユーザーフォームの背景色を変更する
- ユーザーフォームにコントロールを追加する方法
- コントロールの数と名前と種類を取得する
- ユーザーフォームを×ボタンで閉じれないようにする方法
1.ユーザーフォームを閉じる方法
VBAで開いているユーザーフォームを閉じるには「Unload」ステートメントを使用します。
次のように記述します。
Unload object
「object」には閉じたいユーザーフォームを指定します。
「UserForm1」というユーザーフォームを開いた場合に、これを閉じる場合には次のように記述します。
Unload UserForm1
注意点として「vbModeless」で開いている場合は、閉じるVBAをどこから実行しても閉じる事が可能ですが、「vbModal」で開いている場合はユーザーフォーム上に埋め込まれたコントロールなどのイベントで閉じる事はできますが、それ以外の操作が許可されないので閉じる事ができません。
2.サンプルコード
開いて、閉じるところまでのサンプルコードです。
UserForm1というフォームに閉じるというCaptionのコマンドボタンを追加しています。
ユーザーフォームを開く
Sub Sample()
UserForm1.Show
End Sub
「vbModeless」で開く場合は次のように記述します。
Sub Sample()
UserForm1.Show vbModeless
End Sub
ユーザーフォームを閉じる
上記で開いたフォームを閉じます。
単純に閉じるコードは次のように記述しますが、「vbModal」で開いている場合はフォーム以外の操作ができないため、閉じるボタンのクリックイベントに閉じるコードを記述する必要があります。
通常の閉じるコード
コマンドボタンに埋め込む等考えない場合はシンプルに次のようになります。
Sub Sample1()
Unload UserForm1
End Sub
コマンドボタンで閉じる
開いているフォーム上に設置されたコントロールで閉じれば、「vbModal」で開いている場合であっても普通に閉じる事が可能です。
コマンドボタンのクリックイベントで閉じる場合の手順です。
まずUserForm1をモジュールで開きます。
設置したコマンドボタンをダブルクリックするか、コントロール上で右クリックをして「コードの表示」を選択します。
コードを開くと自動的に「Private Sub CommandButton1_Click()」というクリックイベントのプロシージャが作成されますので、プロシージャ内に閉じるコードを記述します。
Private Sub CommandButton1_Click()
Unload UserForm1
End Sub
もしくは、先ほどの様に標準モジュールに記載したプロシージャをCallで呼び出します。
Private Sub CommandButton1_Click()
Call Sample1
End Sub