大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAのユーザーフォームを開くときと閉じるときのイベントについてご紹介します。ユーザーフォームの初期値設定や『×』ボタンで閉じられなくするなど応用の利くユーザーフォームを作成することができます。

はじめに

この記事ではユーザーフォームを開くときと閉じるときのイベントとその実用例についてご紹介します。

イベントコードを応用するとユーザーフォームの初期値設定や『×』ボタンを無効にするなどの応用ができます。

ユーザーフォームを作成する際に参考になるかと思います。

この記事で紹介すること

  • ユーザーフォームを開くときのイベント
  • ユーザーフォームを閉じるときのイベント

目次から見たい項目へ移動すると便利ですよ。

目次

VBAのユーザーフォームを開くときのイベント

Excel VBAのユーザーフォームを開くときのイベントとその実用例をご紹介します。

イベントコードの作成方法

ユーザーフォームを開くときに実行するイベントの作成方法を説明します。

ユーザーフォームの中のコードで左上のリストを選択します。

ここで『UserForm』を選択します。

リストからフォームの種類を選択

イベントコード挿入のリストからフォームを選択する

次に右のリストから『Initialize』を選択します。

リストからイベントコードの種類を選択

イベントコード挿入のリストからイベントコードInitializeを選択する

これでコード内にユーザーフォームを開いた際に実行するイベントコード『Private Sub UserForm_Initialize()』が作成されます。

イベントコードが作成される

Initializeのイベントコードが作成される

Initializeのイベントコードが作成されました。

手入力する必要もコードを覚える必要もありません。リストから挿入することができます。

開くときのイベント

ユーザーフォームを開く際のイベントは『Private Sub UserForm_Initialize()』を実行してみます。

実行したコードはこちらです。

『ユーザーフォームの中のコード』に記載しています。

'ユーザーフォームを開く際に実行
Private Sub UserForm_Initialize()
    MsgBox "ユーザーフォームを開きます"
End Sub

こちらのVBAコードをF5で実行してみます。

開くときのイベントを実行

ユーザーフォームを開いた際にイベントを実行する

メッセージが出てきました。

OKを押してメッセージを閉じます。

ユーザーフォームが開かれる

ユーザーフォームが開かれる

ユーザーフォームを開いた際にコードを実行できていることがわかります。

初期値の設定

少し応用でユーザーフォームを開いた際にテキストボックスの初期値を設定してみます。

テキストボックスの初期値を設定するVBAコードはこちらになります。

『ユーザーフォームの中のコード』に記載します。

'ユーザーフォームを開く際に実行
Private Sub UserForm_Initialize()
    'セルからテキストボックスに値を入力
    TextBox1.Text = ActiveSheet.Cells(1, 1)
End Sub

F5でユーザーフォームを開いてみます。

初期値を設定する

ユーザーフォームを開いて初期値を設定する

ユーザーフォームを開いたタイミングでテキストボックスの初期値をセルから取得することができました。

ユーザーフォームを使う上で初期値設定はよく使われる方法かと思います。

VBAコード説明

ユーザーフォームを開く際に実行するイベントコードは『Private Sub UserForm_Initialize()』となります。

このコードの中にセルからテキストボックスへ値を入力するコードを記載しています『TextBox1.Text = ActiveSheet.Cells(1, 1)』。

これでユーザフォームを開く際に初期値を取得することができます。

VBAのユーザーフォームを閉じるときのイベント

Excel VBAのユーザーフォームを閉じるときのイベントについてご紹介します。

イベントコードの作成方法

まずユーザーフォームを閉じる際のイベントコードの作成方法について説明します。

ユーザーフォームの中のコードで左上のリストを選択します。

ここで『UserForm』を選択します。

リストからフォームの種類を選択

イベントコード挿入のリストからフォームを選択する

次に右のリストから『QueryClose』を選択します。

リストからイベントコードの種類を選択

イベントコード挿入のリストからイベントコードQueryCloseを選択する

これでコード内にユーザーフォームを開いた際に実行するイベントコード『Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)』が作成されます。

イベントコードが作成される

QueryCloseのイベントコードが作成される

QueryCloseのイベントコードが作成されました。

イベントコードは手入力しなくてもVBE画面のリストから作成できます。

ユーザーフォームを閉じるイベントコードは長いですが覚える必要はありません。

閉じるときのイベント

ユーザーフォームを閉じる際に実行するイベントコードを実行してみます。

『ユーザーフォームの中のコード』に記載します。

'ユーザーフォームを閉じる際に実行
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    MsgBox "ユーザーフォームを閉じます"
End Sub

では『×』ボタンでユーザーフォームを閉じてみます。

閉じる際のイベントコードを実行

ユーザーフォームを閉じる際にコードを実行させる

メッセージが表示されました。

メッセージをOKで消すとユーザーフォームが閉じられます。

イベントコード実行後に閉じられる

ユーザーフォームが閉じられる

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

ユーザーフォームを閉じる際にVBAコードが実行されたことがわかります。

『×』で閉じられないようにする

少し応用でユーザーフォームを『×』で閉じられないようにするVBAコードを紹介します。

ユーザーフォームを閉じる際に実行するイベントコードを応用するとできます。

'ユーザーフォームを閉じる際に実行
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    '『×』ボタンが押された場合
    If CloseMode = 0 Then
        MsgBox "ボタンで閉じてください"
        '閉じる操作をキャンセルする
        Cancel = True
    End If
End Sub

Private Sub CommandButton1_Click()
    
    '何かしらのコードを実行させるとか
    
    '閉じる
    Unload Me
End Sub

ではユーザーフォームを『×』ボタンで閉じてみます。

『×』ボタンで閉じてみる

×でユーザーフォームを閉じてみる

メッセージが表示されました。

メッセージをOKで消してみます。

『×』ボタンで閉じられなくなる

ユーザーフォームを×で閉じられない

ユーザーフォームは開いたままです。

『×』ボタンで閉じられなくなりました。

閉じる際はボタンクリックで閉じます。

閉じるときはボタンで閉じる

ボタンでユーザーフォームを閉じる

ボタンをクリックします。

ユーザーフォームが閉じられる

ボタンでユーザーフォームを閉じた

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

ボタンになにかコードを記載しておけば閉じる際にコードを実行して閉じることができます。

VBAコードの説明

『×』ボタンをクリックすると『CloseMode』に『0』が入るという点がポイントです。

なので『×』ボタンがクリックされた場合つまりコード『If CloseMode = 0 Then』の場合には閉じるという操作をキャンセルすればいいということになります。

ユーザーフォームを閉じるという操作は『Cancel = True』を入力するとできます。

これでユーザーフォームは『×』ボタンで閉じられなくなります。

閉じる際はボタンに登録した『Unload Me』で閉じます。

『×』ボタンではなくユーザーフォームのボタン等でユーザーフォームを閉じさせたい場合に使えます。

おわりに

この記事ではユーザーフォームを開くときと閉じるときのイベントについてご紹介しました。

ユーザーフォームを開く際のイベントコード『Initialize』はよく使われるコードで初期値設定に使えます。

また閉じる際のイベントコード『QueryClose』を使えば『×』ボタンで閉じられなくするなど応用の利くコードが作成できます。

ご参考になればと思います。最後までご覧くださいましてありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す