エクセルVBA ユーザーフォームを設置します。
今回はフォームのベースとなる部分を解説します。
挿入と表示は簡単に行うことが出来ます。
こんにちは、じゅんぱ店長(@junpa33)です。
エクセルで作業を自動化する。
日常業務を効率よく時短したい場合、エクセルがあまり得意でない人は特に、
習得すべき知識量(解決すべき課題)がたくさんありすぎると思われている方も多いでしょう。
今回は、その習得すべき知識の一つ「ユーザーフォーム作成」についてです。
コンテンツ
ユーザーフォームの挿入

ユーザーフォームを挿入するためには、まず最初にVBE(ビジュアルベーシックエディタ)が開かれていなければなりません。
VBE(ビジュアルベーシックエディタ)の開き方が分からないという方は、以下の記事で確認してください。
「挿入タブ」で「ユーザーフォーム」をクリック


「UserForm1」が挿入されました。
同時に「ツールボックス」も表示されます。

ユーザーフォームの大きさの変更はマウスで「 ”□” または “■” 」をドラッグすることで行えます。
これで、全く無地のユーザーフォームを設置することが出来ました。
では、実際にはどのように表示されているのかを見てみることにします。
ユーザーフォームの表示

ユーザーフォームを表示するためには、その動きをするVBAコード(プロシージャー)を記述する必要があります。
記述する構文としては、
「ユーザーフォーム名(オブジェクト名)」+「Showメソッド」
という至って簡単な記述でOKです。
どこに記述するかはいくつかのパターンがありますが、
とりあえず、一番わかりやすい場所として標準モジュール「Module1」に記述します。
標準モジュールの挿入方法は、「挿入タブ」で「標準モジュール」をクリック

Module1が表示されたところで、以下のコードを記述します。
Option Explicit
Sub ユーザーフォーム表示()
UserForm1.Show
End Sub

この「UserForm1.Show」というコードを実行したときには、ユーザーフォームが確かに表示されますが、表示されている間はエクセルについての他の操作が一切行うことが出来ません。
・・・モーダル表示と言います。メッセージボックスで「OK」クリックまで他操作が出来ない状態と同じです。
「vbModal」は省略可能です。
Sub ユーザーフォーム表示1()
UserForm1.Show vbModal
End Sub
対して、ユーザーフォームが表示されている時でも、エクセルで他の操作が可能になる表示モードがあります。
アクティブなシートからその都度データを拾いプログラムに利用することも可能になります。
・・・モードレス表示と言います。
Sub ユーザーフォーム表示2()
UserForm1.Show vbModeless
End Sub
ユーザーフォームの名前変更

ユーザーフォームの名称が「UserForm1」では、プログラム作成するに当たってあまり嬉しくはないことの方が多いでしょう。
名称を変更するには、「ユーザーフォームのプロパティ」を操作することで可能になります。
プロパティの表示方法は、「表示タブ」で「プロパティウインドウ」をクリックします。



上の赤枠の項目の指定内容を変更することでユーザーフォームを自由な名称に設定することが可能です。

オブジェクト名はVBAコード記述時に使用します。
Sub ユーザーフォーム表示3()
ユーザーフォーム例.Show vbModeless
End Sub
Captionはユーザーフォーム上の名称表示となります

FontとForeColorはこの部分での変更は特に反映されるものはありません。(意味を持ちません)
まとめ

UIであるユーザーフォームは、作成したプログラムの使い勝手に直接影響する大切な部分です。
同じ機能であってもそのボタンを設置する位置や文字表示だけでも利用者の使い勝手に影響してくるものです。
今回はそういったもののベース部分を説明しました。
でも、やっていることは至極簡単な内容ですので、構えずにサクッと熟していけるのではないでしょうか。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。