【エクセルVBA】コマンドボタンのClickイベントとUnloadステートメントでユーザーフォームを閉じる方法


ユーザーフォーム,コマンドボタン,イベント

皆様こんにちは、ノグチです。

前回は、ユーザーフォームにいくつかコントロールを追加して、そのユーザーフォームをワークシートから呼び出す方法をご紹介しました。

【エクセルVBA】Showメソッドでユーザーフォームをコマンドボタンから開いてみよう!
エクセルの便利機能、ユーザーフォームの作り方と使い方を、連載記事でご紹介しています。今回は、ユーザーフォームにラベルやテキストボックスといったコントロールを追加する方法と、作成したユーザーフォームをワークシートから呼び出す方法をご紹介しています。

今回からは、作成したユーザーフォームと各コントロールのプロパティやイベントを使って、色々な動作をさせていきましょう!

本稿では、コマンドボタンのイベントをご紹介していきますよ。

前回までのおさらい

まずは、前回作成したユーザーフォームがこちら。

ユーザーフォーム,オブジェクト名

ユーザーフォームにテキストボックスやコマンドボタンといったコントロールを配置して、ユーザーフォーム自体のオブジェクト名を、「MyForm」という任意の名前に変えたのでした。

今回は、このフォーム上にある、コマンドボタンが主役です。

コマンドボタンのオブジェクト名を変更する

コマンドボタンも、ユーザーフォーム同様に、任意のオブジェクト名にすることができます。

VBAコード内での記述し易さと分り易さのために、オブジェクト名を判別しやすいものに変えておきましょう。

コマンドボタンのプロパティシートを開いて…

コマンドボタン,プロパティシート

(オブジェクト名)」という項目の値を変えれば、コマンドボタンのオブジェクト名を変更することができます。

今回は、「btnOK」としておきましょう。

コマンドボタンのイベントに任意の処理をセットする

コマンドボタンのオブジェクト名を変更したところで、コマンドボタンのイベントを使ってみましょう。

イベントは、コントロールに対して特定の操作が行われた時に実行されるもので、各イベントに対応したイベントプロシージャに処理を記述することで、そのイベントが実行された時に任意の処理をさせることができます。

イベントに対応したイベントプロシージャを開く

イベントに処理を追加する場合は、対応したイベントのイベントプロシージャ内に処理を記述していきます。

VBEでユーザーフォームを開き、コマンドボタンをダブルクリックするか、コントロールを選択して右クリック>「コードの表示」をクリックすると、自動的にコマンドボタンのイベントプロシージャが表示されます。VBE,イベント,Click

自動的に表示されたイベントプロシージャ以外のイベントを使いたい場合は、画面右側にあるドロップダウンリストの中から、使いたいイベントを選択すれば、選択したイベントプロシージャが自動的に表示されますよ。

VBE,イベント

Clickイベント

コマンドボタンのイベントに、Clickイベントがあります。

このイベントは、コマンドボタンがクリックされた時に実行されるイベントで、コマンドボタンのイベントとして使われる頻度が最も高いものでしょう。

ユーザーフォームでコマンドボタンを配置したら、必ず使うと言っても過言ではありません。

Clickイベント時に何らかの処理をさせたい場合、例えばこんな風に記述します。

コマンドボタンがクリックされたら、メッセージを表示する、というコードです。

このコードを保存して、ユーザーフォーム上のコマンドボタンをクリックしてみると…

DblClickイベント

この通り、Clickイベントプロシージャ内に記述した処理が実行されます。

DblClickイベント

コマンドボタンのイベントには、ボタンをダブルクリックした時のイベント、DblClickイベントもあります。

このイベントを使うには、Clickイベント同様に、対応したイベントプロシージャに処理を書き込めばOK。

例えばこんな風に。

そしてコマンドボタンをダブルクリックすると、イベントプロシージャ内に記述した処理が実行されますよ。

注意点

ClickイベントとDblClickイベントをご紹介しましたが、この2つのイベントを同一のコマンドボタンに対して使おうとする場合は、注意が必要です。

Clickイベントは、ボタンがクリックされれば即実行されます。

Clickイベントでユーザーフォームを閉じたり、メッセージを表示したりといった、操作の主体がユーザーフォームでなくなる処理をさせると、ユーザーフォームが2回目のクリックを認識することができず、DblClickイベントが実行されません

同一のコマンドボタンに対してはClcikイベントとDblClickイベント両方を使わないようにするか、処理の内容や順番を考える必要がありますね。

クリックしてユーザーフォームを閉じる

Unloadステートメントでユーザーフォームを閉じる

コマンドボタンのイベントが使えるようになったので、コマンドボタンをクリックしたらユーザーフォームを閉じる、という処理をさせてみましょう。

ユーザーフォームを閉じるには、Unloadステートメントを使います。

記述方法はこちら。

Unload UserFormオブジェクト

例えば、「MyForm123」というユーザーフォームを閉じたい場合、

と記述すればOKです。

Clickイベントプロシージャに処理をセットする

次はこのUnloadステートメントを、コマンドボタンのイベントプロシージャの中に記述しましょう。

コマンドボタンのClickイベントプロシージャに、このように記述します。

そしてユーザーフォームを一旦開いて、コマンドボタンをクリックすると…

ユーザーフォーム,Hideメソッド

ユーザーフォームが閉じられましたね。

最後に

今回は、コマンドボタンのClickイベントDblClickイベントをご紹介しました。

今回ご紹介したように、ユーザーフォームの各コントロールのプロパティとイベントを使えば、様々な動作をさせることができますよ。

次回は、テキストボックスのプロパティとイベントをご紹介していきます。

それでは、最後までお読みいただき有難うございました!

連載目次:【エクセルVBA】ユーザーフォームを使ってみよう!

ユーザーフォームは、ちょっとした画面なら作れてしまう、便利な機能です。

何となく敷居が高いように感じてしまいますが、順を追っていけば難しいことはありませんよ。

  1. 【エクセルVBA】ユーザーフォームを作ってみよう!VBEでフォームを挿入する方法
  2. 【エクセルVBA】Showメソッドでユーザーフォームをコマンドボタンから開いてみよう!
  3. 【エクセルVBA】コマンドボタンのClickイベントとUnloadステートメントでユーザーフォームを閉じる方法

タイトルとURLをコピーしました