ユーザーフォームを作成すると、ユーザーからの入力としてデータを受け取りますが、フォームに提供されたデータはそれ自体を閉じないため、ユーザーがデータを再度入力するように誤解させる可能性があります。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のユーザーフォームを閉じる方法です。