ユーザーフォームの「モーダル/モードレス」について解説
HOME > エクセルVBA >ユーザーフォームの「モーダル/モードレス」、「イベント その1」 |
ユーザーフォームの「モーダル/モードレス」
Excel97まではユーザーフォームを起動している時はシートの操作、メニュー、あるいは他のユーザーフォームを操作することは出来ませんでした。(モーダルダイアログボックス)
Excel2000以降ではユーザーフォームが起動中でもシート等の操作が出来る設定が追加されました。(モードレスダイアログボックス)
モーダルダイアログボックス、モードレスダイアログボックスの切り替えは簡単で、ユーザーフォームのShowModalプロパティをTrueにするとモーダルダイアログボックス、Falseにするとモードレスダイアログボックスになります。
ユーザーフォームのShowModalプロパティを変更するだけでモーダルダイアログボックス、モードレスダイアログボックスの切り替えが出来ます。
モーダルダイアログボックス、モードレスダイアログボックスそれぞれに利点があります。簡易データベースを作成するなら「モーダルダイアログボックス」を採用し、安易にセル内容を書き換えられないようにしたほうが便利です。
しかしながら、複雑なデータベースになると、一部セルを参照したくなる場合があります。そのような時は「モードレスダイアログボックス」でシートを動かせるようにしたほうが便利でしょう。
ユーザーフォームの「イベント その1」
クリックやダブルクリック、キーを押すなどの決められた操作の事をイベントと呼びます。VBAで、特定の操作をした時にプログラムを起動することが出来ます。イベントプロシージャを作成して、コードを記述するとイベントが発生した時にプログラムが起動します。
まずはユーザーフォームを追加しましょう。追加したユーザーフォーム上で右クリックし、ショートカットメニューからコードの表示(O)をクリックします。
コードウィンドウの右上でイベントを選択することが出来ます。イベントを選択したら、コードウィンドウ欄にすぐにコードが記述できるようにPrivate Sub〜End Subが準備されます。
上の図ではイベントの「クリック」「ダブルクリック」が用意された状態です。
それではユーザーフォームがクリック及びダブルクリックした時のイベントを記述してみましょう。
Private Sub UserForm_Click()
UserForm1.Caption = "ユーザーフォームをクリック"
End Sub
Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
UserForm1.Caption = "ユーザーフォームをダブルクリック"
End Sub
コードを記述して、ユーザーフォームを立ち上げましょう。ユーザーフォームをクリック及びダブルクリックすると、タイトルバーが "ユーザーフォームをクリック"、"ユーザーフォームをダブルクリック"に変化します。
![]() |
デフォルトの状態ではタイトルバーにはUserForm1と記入されています。 |
![]() |
Captionプロパティを変更することによってタイトルバーを変更することが出来ます。イベント機能(クリック)を使用してCaptionを変更します。 クリックすると"ユーザーフォームをクリック"にタイトルが変化します。 |
![]() |
Captionプロパティを変更することによってタイトルバーを変更することが出来ます。イベント機能(ダブルクリック)を使用してCaptionを変更します。 ダブルクリックすると"ユーザーフォームをクリック"にタイトルが変化します。 |
|