ユーザーフォームのプログラミング(準備編)
ExcelVBAでユーザーフォームを使用する方法を解説します。
最初に画面の説明と、プログラミングの大まかな流れを説明します。
画面説明
ユーザーフォームのプログラミングはVBEから「ユーザーフォーム」オブジェクトを追加するところから始まります
プロジェクトウインドウ
ユーザーフォームを使用する場合は、メニューの「挿入」>「ユーザーフォーム」でユーザーフォームを追加します。追加されたユーザーフォームは、オブジェクト(ユーザーフォームの見た目)での表示になっています。プログラムを書くコード画面は、裏画面のようになっていてオブジェクト画面と切り替えて使用します。
画面の切り替え
画面の切り替えは、ユーザーフォームの項目を右クリックするか、メニューの「表示」から、「コード」「オブジェクト」で切り替える事が出来ます。
ショートカットキーは、「F7」「Shift+F7」でそれぞれ切り替えられます。

ちなみに、「オブジェクト」画面でユーザーフォームをダブルクリックすると「コード」画面に切り替わりますが、「Private Sub UserForm_Click()」が追加されると思います。
これは、ユーザーフォームがクリックされた時の処理を書くプロシージャが追加された事を意味します。
この方法を画面切り替えに使うべきではありません。
プロシージャ内に何も記述しなければ何も起こりませんが、不要なら「End Sub」までを削除してください。
ツールボックス

ツールボックスは、複数の部品が配置されており、これらを選択して配置する事で、好きなユーザーフォームを作っていきます。
ツールボックスを閉じてしまった場合は、メニューの「表示」>「ツールボックス」で再表示できます。
(選択できない場合は、一旦VBEを閉じてから再度開くと選択できるようになるようです。)
プロパティウインドウ

プロパティインドウでは、ユーザーフォームの部品ごとにプロパティの設定が出来るようになっています。
一番上に現在選択されているコントロール名が表示されます。
「UserForm1 UserForm」 となっていますが、「ユーザーフォーム名 ユーザーフォームの種類」という意味です。
下にある「(オブジェクト名)」の所を変更するとユーザーフォーム名が変更できます。
日本語を使う事もできます。たくさんのコントロールを使う場合は、わかりやすい名前に変えましょう。
プログラミングの大まかな流れ
ユーザーフォームのプログラミングでは、ユーザーフォームに部品を配置して、その部品に対する処理を書いていきます。大まかな操作は以下のとおりです。
- 各オブジェクト(部品)のプロパティ値の設定
- イベント処理
- 結果などの値の受け渡し
プロパティ値の設定
プロパティ値の設定は、プロパティウインドウでもコードでもできます。
ただし動的に変更したいのであれば、コードで記述する必要があります。
イベント処理
ユーザーフォームのプログラムではイベント処理を行う事が多くなってくると思います。
これはExcelの自動処理というより、Windowsアプリを作るという行為に近くなるからです。
Excelシートがやってくれていた事も自前で作っていくような感じです。
値の受け渡し
ほどんどの場合でExcelシート上で何らかの値を得たい場合などがあると思いますが、その場合はセルを指定したり、グローバル変数(どこからでもアクセスできる変数)を使って値の受け渡しをします。
雑感
ユーザーフォームを使用する場合の筆者の雑感ですが、ユーザーフォームを使う意義は、インターフェイスを提供することにより勝手な値を入力できないようにするという目的があると思います。
このような点から「他者へのプログラム」といった感じになり、特にあまり得意でないユーザーからは歓迎されます。
プログラミングは、値の管理がセルの扱いよりも大変になるという印象があります。
更に、コントロールに関してはあまり高級な事はできないと思った方が賢明でしょう。優れたコントロールもありますが、プログラミングが難しくなります。便利さとキレイさのトレードオフといったところです。
ユーザーフォームの使い方
・ユーザーフォームのプログラミング(準備編)
・ユーザーフォーム 第1回(起動と終了)
・ユーザーフォーム 第2回(ボタン)
・ユーザーフォーム 第3回(ラベル)
・ユーザーフォーム 第4回(テキストボックス)
・ユーザーフォーム 第5回(モーダル・モードレス)
・ユーザーフォーム 第6回(チェックボックス)
・ユーザーフォーム 第7回(オプションボタン)
・ユーザーフォーム 第8回(コンボボックス)
・ユーザーフォーム 第9回(リストボックス)
・ユーザーフォーム 第10回(リストボックス複数選択)
・ユーザーフォーム 第11回(タブストップ)
・ユーザーフォーム 第12回(スピンボタン)