VBAでユーザーフォーム-1使い方|VBEからの表示方法や各種オブジェクトの説明

ユーザーフォームの使い方を勉強する
Excelはセルが配置されたワークシートだけではないのをご存知でしょうか。
Excelにはユーザーインターフェイスを用意する機能が搭載されています。

一般的ではないのですが知ってる人たちの中では
「ユーザーフォーム」と呼ばれています。
以下フォームは私が作ったフォームです。
「都道府県毎に行った事ある?ない?を入力する」という本当にどうでも良い情報を入力するフォームです。
ただし色んな機能を搭載しています。自分で言うのもおかしいですがフォームとしては優秀です。
本シリーズでは準備出来ませんが最終的にはこれを作れるようにブログ記事を書くつもりです。


話をユーザーフォームに戻します。フォームはただ文字や数値を入力するだけではなくて色々な事ができます。
フォーム上にテキストを入力するテキストボックスや選択肢を用意して選んでもらうコンボボックス等です。
画像の一番大きな枠はリストボックスというもので情報をリスト状に並べて選択できるという仕様です。
この様にフォームを使えば色々な要素を自分の考えた様に設置する事が出来るんですよ。
使える様になると世界が広がります。是非勉強してもらいたいです。
そこでユーザーフォームの作り方を学べるシリーズを用意してみました。
関連書籍
私はこちらの書籍でユーザーフォームを勉強しました。ユーザーフォームに関する書籍は数が少ないですよね。
良書に会う確率が少ない環境の中こちらの書籍では初級から上級者向けの機能まで幅広く教えてもらえます。
事例形式で教えてもらえるので勉強した内容を自分の仕事へ展開しやすい仕様になっています。


電子書籍はこちらです。私は電子書籍をおすすめします。圧倒的に取り回しが楽だからです。
関連記事
ユーザーフォームを使うには配列など他の機能も合わせて使う事になります。
関連記事の一覧を掲載しておきます。


参考:学習用ロードマップと連携しています
本シリーズはこちらの記事とも連携しています。
マクロは何から勉強するのか|学習をサポートするためのロードマップを作成
シリーズの構成
本記事を含め全部で7回です。全部見ていただくと以下スキルが身に着きます。
「フォームとフォームから情報を転送する為のシートを用意する」事が出来るようになります。
- VBAでユーザーフォーム-1使い方|VBEからの表示方法や各種オブジェクトの説明
- VBAでユーザーフォーム-2作成|完成時のフォーム、シート、ブックを全て公開
- VBAでユーザーフォーム-3レイアウト|ツールボックスの使い方や再表示の方法を紹介
- VBAでユーザーフォーム-4シート操作|情報の転送先となるシートを用意する
- VBAでユーザーフォーム-5マクロ登録|エクスプローラを使いコードを書く場所を確認
- VBAでユーザーフォーム-6プロシージャ|コードを作りフォームとブック内のシートを繋ぐ
- VBAでユーザーフォーム-7Initialize|起動から終了までのコードを読み解く
今までとは違う考え方が必要です
ユーザーフォームの勉強はワークシートの情報を扱うコードに加えて対象となる要素が増えます。
冒頭で説明した様に入力フォームを作れる様になるのですが半面難しさが増します。ただ難しいだけではないです。
ユーザーフォームはコードの難しさの質が少し違います
まだ抽象的な説明になるのですがひとまず4つの例を挙げました。
- そもそもコードはどこに書くのか?標準モジュールなのか?
- 今自分はどのフォームのコードを書いているのか?
- 〇〇というフォームから△△というフォームに値を渡すにはどうするのか?
- □□というフォルダにある××というデータにフォームから値を転送するには?
上記ような事を考えてコードを用意する事になります。
初心者の頃やフォームを使わない時は起動させたExcel内で完結するコードを書いていました。
中級者の方は別シート、ブックへ指示を出すコードを書いた事があるかもしれません。
フォームを扱うようになるとさらにスキルアップが必要になります。
ユーザーフォームとworkbookを中心にもう少し広い領域で仕事をとらえる事が必要になります。
これが難しさの質が少し違うという事です。
いろんな機能を使う事になります
テキストボックスやコンボボックス、リストボックスへ情報を展開する為に色々覚える必要があります。
- 配列
- ファイル、フォルダ間の連携
- スコープ
- サブルーチン
- 参照渡し、値渡し
紹介した要素をしっかり勉強して理解出来てないと何をやってるのか意味が分からなくなってしまいます。
1つ1つクリアしていけば問題無いです。追々説明していきますので一緒に勉強していきましょう。
今後の予定を先に提示しておきます。今回はフォームを構成する各種コントロールの説明を行います。
次回以降は以下のようなスケジュールで記事を挙げていく事を予定しています。
全てやり切ると一定のアウトプットを用意する事が出来るという建付けを考えています。
最初に見ていただいた「都道府県・・・」のフォームより簡単なものを用意する事を予定しています。
- このシリーズを勉強する事で作ることが出来るアウトプットを紹介
- 実際にフォームを作ってみる
- フォームに繋げるワークシートを用意する
- フォームとシートを繋げるためのコードを用意する
- 動作確認
本記事での課題
シリーズでは1記事ずつ課題を用意していきます。今回の課題です。



課題:
各種コントロールについて概要を理解しよう
各種コントロールを紹介
では早速説明に入ります。先程提示したような課題に取り組む前に説明しておきたい内容があります。
まずはフォームを含めた機能(コントロール)の説明をさせてください。
全部は説明しませんが今回は比較的使用頻度が高い機能を説明します。
以降フォームで扱うコントロールの説明をしていきます。
フォーム
各種コントロールを配置する為のベースになります。プロジェクトエクスプローラ内で以下操作をしてください。
右クリック→挿入→ユーザーフォーム
コードウインドウにフォームが現れます。プロジェクトエクスプローラ内のツリーには以下の様に表示されます。
枝葉の部分を見ていくと上からSheet1、ThisWorkbook、UserForm1、標準モジュールと並列で表示されますね。


UserForm1以外は慣れ親しんだ要素です。各モジュールはコードを書くフィールドを持っていますね。
という事はフォームにもコードが書けるのか?と考えた方は鋭いです。フォームもコードを持つことが出来ます。
このフォームに色々なコントロールを置いていきます。
フォームと一緒にツールボックスと書いてあるダイアログが付いてきます。ここから各要素を生成していきますよ。


ツールボックス出ない方はVBEで以下の様に探してみてください。表示タブの中に居ます。


先程も申し上げましたがここに居るアイコン群を使って各種コントロールを生成していきます。
左上から順番に・・・と言いたいところですが使用頻度を見て抜粋で紹介させていただきます。


オブジェクトの選択
ツールボックスのコントロールタブ内左上の矢印マークです。
このアイコンを選択する事でコントロールを移動させることが出来ます。
ラベル
「A」というマークのアイコンです。フォームに文字を載せる時に使用します。
テキストボックス
四角に「abl」と書いてあるアイコンです。
文字を入力する為の範囲(ブロック)を作成するアイコンです。
コンボボックス
テキストボックスの1つ右のアイコンです。アイコン上部に青の長方形がいますね。
これはセルの画面では「データの入力規則」の中にあるリストという機能とほぼ同じです。
セルが表示されている画面のデータタブの中に居ます。


簡単に紹介しますとクリックすると選択肢を表示する事が出来る機能です。
使用する時のイメージを持ってもらう為に参考に一例を挙げてみます。旅行予約サイトで考えてみましょう。
行先がコンボボックスになっていてクリックすると北海道、東北、関東・・・と選択肢が出てきますよね。
この機能と同じような機能だと思っていただければよいです。
リストボックス
コンボボックスの1つ右のアイコンです。青い四角が2つ居ます。情報をリスト上に表示する事が出来ます。
罫線は無いですがセル画面の様に縦横に規則的に情報を持つことが出来ます。
チェックボックス
四角にレ点のアイコンです。見たままの使い方をします。クリックするとレ点が入るというコントロールです。
オプションボタン
マルに点のアイコンです。いわゆるラジオボタンです。
選択肢の中で1つだけ選択してもらいたい時に使うコントロールです。
まとめ
今回は色々なコントロールについて紹介させていただきました。まずはイメージを掴んでもらうのが狙いでした。
今回紹介したコントロールは以降の記事で用意するアウトプットには全部は使いません。
使わない中でも紹介したのは理由があります。「こんな機能もあるんだ」という事を知ってほしかった為です。
まずは出来るだけ簡単なフォームを作ってコードの書き方に慣れてもらう事が必要です。
最低限の事が分かる様になったらあとは皆様各自でコントロールを使用してみてください。
今回は以上となります。次回記事で今シリーズのアウトプットについて説明していきます。

