VBA Close UserForm | 例を使用してユーザーフォームを閉じるための上位2つの方法

ユーザーフォームを作成すると、ユーザーからの入力としてデータを受け取りますが、フォームに提供されたデータはそれ自体を閉じないため、ユーザーがデータを再度入力するように誤解させる可能性があります。2つの異なるコマンドを使用して、入力が与えられ、それらはユーザーフォームを閉じるためのUnload meメソッドであるか、userform.hideメソッドを使用できます。

ExcelVBA閉じるユーザーフォーム

ユーザーフォームは、VBAプロジェクトの一部としてユーザーから入力を取得する際に不可欠です。通常、ユーザーフォームは、ユーザーの前に表示する前にデザインします。VBAユーザーフォームのデザインが完了したら、ユーザーの前に同じものを表示し、VBAコーディングを要求する必要があります。同様に、ユーザーフォームを閉じるには、VBAコーディングの知識が必要です。

この記事では、VBAコーディングでユーザーフォームを閉じる方法を紹介します。

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

ユーザーフォームの目的が完了すると、ユーザーの前にユーザーフォームを表示し続けることに意味があるため、ユーザーフォームを閉じる必要があります。「UnloadMe」ステートメントと「UserForm.Hide」ステートメントを使用して、ユーザーフォームを閉じることができます。両者は少し異なりますが、最終的には目的を果たします。

このVBAClose UserForm Excelテンプレートはここからダウンロードできます– VBA Close UserFormExcelテンプレート

#1-VBAで「UnloadMe」ステートメントを使用してユーザーフォームを閉じる

たとえば、以下のユーザーフォームの画像を見てください。

ユーザーフォームに「MyUserForm」という名前を付けました。

ユーザーフォームを実行すると、次のようなユーザーフォームが表示されます。

必要な詳細を入力する必要があります。[送信]ボタンをクリックすると情報が入力されると、左側に表示されているワークシートに同じデータがキャプチャされます。

送信ボタンをクリックすると、ユーザーフォームに入力したデータがキャプチャされます。

「キャンセル」というボタンがもう1つあります。これは何をしますか?

ユーザーフォームを表示する前に、このボタンを構成する必要があります。次に、Visual Basic Editorに戻って、このボタンを構成します。

次に、[キャンセル]ボタンをダブルクリックすると、次のような自動VBAサブプロシージャが開きます。

この手順では、[キャンセル]ボタンをクリックした場合にどうなるかについてのVBAコードを記述する必要があります。このキャンセルボタンをクリックすると、現在作業中のユーザーフォームが閉じます。

したがって、コードを「UnloadMe」と記述します。

コード:

 Private Sub CancelButton_Click()Unload Me End Sub 

「UnloadMe」は、作業中のユーザーフォームを閉じるために使用する単語です。ここで、ユーザーフォームは「私」という単語をユーザーフォーム自体として認識します。

「UnloadMe」はそのユーザーフォームプロシージャでのみ使用でき、他のモジュールでこのステートメントを呼び出すことはできません。呼び出されると、「Invalid use ofMeKeyword」というエラーメッセージが表示されます。

さて、F5キーを使用して、または手動でコードを実行しましょう。空白のユーザーフォームが表示されます。

データを入力し、[送信]をクリックします。

送信ボタンをクリックすると、指定されたセルに値が保存されます。

データ入力が終わったら、ユーザーフォームを閉じる必要がありますね。

したがって、[キャンセル]ボタンをクリックしてユーザーフォームを閉じると、ユーザーフォームが閉じます。

#2 – ExcelVBAのHideメソッドを使用してユーザーフォームを閉じる

VBAでも「非表示」メソッドを使用してユーザーフォームを閉じることができます。ここでもう一度、キャンセルボタンをダブルクリックして、プライベートサブプロシージャを確認します。

ユーザーフォームを閉じるためのコードを既に記述しているので、VBAに既存のコードを表示できます。これを削除します。

Hideメソッドを使用するには、ユーザーフォームをその名前で呼び出す必要があります。この場合、ユーザーフォーム名は「MyUserForm」です。

ドット(。)を付けると、名前でユーザーフォームに言及した後、このユーザーフォームのすべてのプロパティとメソッドを確認できます。次に、「非表示」方式を選択します。

では、ユーザーフォームをもう一度実行してみましょう。空白のユーザーフォームが表示されます。最初に詳細を入力してください。

[送信]ボタンをクリックせずに、[キャンセル]ボタンをクリックすると、ユーザーフォームが非表示になります。

ExcelVBAでのアンロードと非表示の違い

UnloadとHideの違いは何ですか?どちらも同じような目的を果たします。これら2つの間に違いがあります。まず、UnloadMeステートメントを使用します。下の画像を見てください。

ユーザーフォームにデータを入力しましたが、まだ送信していません。[キャンセル]をクリックすると、ユーザーフォームがアンロードされます。

ここでも、ExcelショートカットキーF5を使用するか、手動でコードを実行すると、空白のユーザーフォームが表示されます。

誤ってデータを正しく入力しましたが、キャンセルボタンをクリックしましたが、新しいユーザーフォームが再び表示されたら、最初からデータを入力しました。

次に、「非表示」方式を使用します。

いいえ、キャンセルボタンをクリックします。表示されているユーザーフォームが非表示になります。しかし、マクロを再実行すると、ユーザーフォームにすでに入力したデータが返されます。

これは、「Unload」ステートメントと「Hide」メソッドを使用して、ExcelVBAのユーザーフォームを閉じる方法です。