Excel VBA ユーザーフォームを閉じる方法

ユーザーフォーム作成/操作

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
タイトルとURLをコピーしました