エクセルの神髄
Excelユーザーフォーム入門

ExcelマクロVBAのユーザーフォームの基礎、初心者向け入門解説、記事の目次です
最終更新日:2020-01-13

Excelユーザーフォーム入門


エクセル(Excel)マクロ(VBA)をやっていればユーザーフォームの存在を知り、そしてユーザーフォームを使いたくなります。
使いたくなるというより、使った方が良い場合が出てきます。


しかし、ユーザーフォームは少々とっつきにくく、使い始めて使いこなすには、
各種コントロールの特性を理解し、イベントについても深い知識が必要になりす。

ここでは、ユーザーフォーム作成に当たっての各種技術を基礎から解説していきます。
ただし、イベントがどういうものかの最低限の知識として、以下のページは読んでから始めてください。

第124回.Workbookのイベントプロシージャー
Workbookのイベントプロシージャーは、ブックに対し特定の操作(これがイベント)が行われた時に実行されます。イベントは、手動でもVBAでも、どちらで操作が行われても発生します。Workbookのイベントは多数用意されています。
第125回.Worksheetのイベントプロシージャー
Worksheetのイベントプロシージャーは、ワークシートまたはそのセルに対し特定の操作(これがイベント)が行われた時に実行されます。イベントは、手動でもVBAでも、どちらで操作が行われても発生します。Worksheetのイベントプロシージャーの一覧紹介と主要なイベントについて解説します。



※当初Excel2010で作成した記事をExcel2019で再作成しました。

ユーザーフォーム入門の目次

第1回.ユーザーフォームを挿入
ユーザーフォーム入門として基礎から解説します。まずは、ユーザーフォームの挿入です。ユーザーフォームの挿入手順 メニユーの「挿入」→「ユーザーフォーム」または、左ウインドウのプロジェクト内を右クリックし、「挿入」→「ユーザーフォーム」「UserForm1」が挿入されます。

第2回.フォームのプロパティ
ユーザーフォーム入門として基礎から解説します。フォームのプロパティの主要なものについて説明します。フュームの全プロパティ プロパティはたくさんありますね。これ全部理解するのは大変です。いずれは、全て理解するに越したことはないですが、とりあえず、以下に掲載している必要最低限のプロパティだけは把握しておきましょう。

第3回.コントロールの追加(コマンドボタン)
ユーザーフォーム入門として基礎から解説します。何もないフォームでは何もできませんので、とりあえず部品を配置しましょう。この部品をコントロールと呼びます。ツールボックス ツールボックスには、使えるコントロールが並んでいます。

第4回.コントロールの位置・サイズ調整
ユーザーフォーム入門として基礎から解説します。閉じるボタンだけでは何もできないので、もう少し追加します。複数のボタンを配置したら、位置やサイズを統一したいですね。OKボタンの追加と移動 とりあえず、OKボタンを追加しましょう。

第5回.ラベルの追加
ユーザーフォーム入門として基礎から解説します。フュームが表示されたとき、ユーザーが何をしたらよいか分からないと困ります。それには、日本語で分かりやすく表示しておく必要があります。自由に固定の文字を表示するにはラベルを使います。

第6回.テキストボックスの追加
ユーザーフォーム入門として基礎から解説します。フュームにユーザーが自由に入力できるテキストボックスを配置します。テキストボックスの追加 前回は、ラベルだけ追加しました。今回は、ラベルに対応するテキストボックスを追加しましょう。

第7回.テキストボックスの値をセルへ
ユーザーフォーム入門として基礎から解説します。ユーザーフュームのテキストボックスに入力した値を、ワークシートのセルに出力します。前回までに作成したユーザーフォーム 前回作成したユーザーフォームです。「OK」ボタンを押下すると、このテキストボックスに入力した値をワークシートのセルに値を設定するようにします。

第8回.セルの値をテキストボックスへ
ユーザーフォーム入門として基礎から解説します。フュームのテキストボックスにワークシートのセル値を表示します。シートの実行ボタンを押下したら、アクティブセルの行の値をフォームに表示してみましょう。Initializeイベントプロシージャーの追加 フォームのコードを表示しましょう。

第9回.標準モジュールとフォーム間のデータ受け渡しⅠ
ユーザーフォーム入門として基礎から解説します。フォームが起動された時、起動したシートのアクティブセルの行数を知る方法について解説します。前回までに作成したVBA 標準モジュール フォームモジュール PrivateSubUserForm_Initialize() DimiAsLong WithWorksheets("顧客マスタ") i=…


第10回.標準モジュールとフォーム間のデータ受け渡しⅡ
ユーザーフォーム入門として基礎から解説します。1.シートのセルを使う 2.標準モジュールのグローバル変数を使う 3.標準モジュールからフォームのコントロールを操作する 4.Subプロシージャーの引数を使う 5.Functionプロシージャーの戻り値を使う。

第11回.コンボボックス(ComboBox)の追加
ユーザーフォーム入門として基礎から解説します。ユーザーフォームで良く使われるコントロールは、ラベル、テキストボックス これは当然ですが、その次に良く使われるものは、コンボボックス、リストボックス、チェックボックス、オプションボタンになるでしょう。

第12回.リストボックス(ListBox)の追加
ユーザーフォーム入門として基礎から解説します。リストボックスについて解説します。リストボックスとコンボボックスの使い方はほぼ同様になります。前回コンボボックスで単一列(1列)の場合を説明しましたので、今回は特に複数列について詳しく説明します。

第13回.チェックボックス(CheckBox)の追加
ユーザーフォーム入門として基礎から解説します。チェックボックスは、ONかOFFかの2択の場合に使われます。チェックボックスの追加 今回は、顧客の休止状態のチェックボックスを追加してみましょう。オブジェクト名:chk休止 とすることにします。

第14回.オプションボタン(OptionButton)の追加
ユーザーフォーム入門として基礎から解説します。オプションボタンは、複数の項目からの単一選択になります。ラジオボタン、トグルボタンなどとも呼ばれるものです。前回のチェックボックスと混同されがちですが、チェックボクスはON/OFF、オプションボタンは複数からの選択になります。

第15回.ここまでの整理と完成VBA
ユーザーフォーム入門として基礎から解説します。一旦、ここまでの復習を兼ねて全VBAの整理をします。ついでに、シートの当該行のダブルクリックでフォームが開くようにします。ワークシート Worksheets("顧客マスタ") シートモジュール ダブルクリック時のイベントプロシージャーを追加しました。

第16回.アクティブコントロールに色を付ける
ユーザーフォーム入門として基礎から解説します。フォーム内のどこにカーソルがあるか分かりづらい場合があります。そこで、アクティブなコントロールのバックカラーを変えたり、対応するラベルのフォントを変更したりして、アクティブなコントロールを解り易くします。

第17回.Enterキーで次のコントロールに移動する
ユーザーフォーム入門として基礎から解説します。Enterキーの押下で、(タブ順が)次のコントロールに順々に移動してほしいものです。ユーザーフォームでのEnterキー動作について テキストボックスは、Enterキー押下で次のコントロールに進みます。

第18回.2段階のコンボボックス
ユーザーフォーム入門として基礎から解説します。2段階コンボボックスを作成します。1つのコンボボックスの選択内容により、次のコンボボックスのリストを変更します。ワークシートのセルの入力規則で実施する場合は、入力規則のリストを、2段階の絞り込みで作成1 入力規則のリストを、2段階の絞り込みで作成2一覧リストを使用して、

第19回.数値専用のテキストボックス
ユーザーフォーム入門として基礎から解説します。数値専用のテキストボックスの作成です。数字以外は入力出来ないテキストボックスを作成します。数値専用のテキストボックスの追加 以下のように金額のテキストボックスを追加します。

第20回.テキストボックスの各種イベント
ユーザーフォーム入門として基礎から解説します。ユーザーフォームで最も良く使われる、テキストボックスのイベントの一覧と、キー入力と、コントロール間の移動時のイベント発生順について記載します。ユーザーの操作に応じて自動処理するためには、その操作により発生するイベントと、その発生順序を理解しておくことが必要です。

第21回.ユーザーフォームの各種イベント
ユーザーフォーム入門として基礎から解説します。ユーザーフォームに対する操作(アクション)で発生するイベントの一覧です、ユーザーフォームそのものの制御をする場合は、このイベントを利用します。ユーザーフォームのイベント一覧 太字のイベントが良く使われるイベントになります。

第22回.コントロールの動的作成
ユーザーフォームは、事前に画面デザインを考えて、それにそって部品コントロールを配置するものです。しかし、ユーザーの操作に応じて、動的に部品コントロールを変更したい場合があります。このような場合の対処方法としては、大きく以下の2通りの方法があります。

第23回.イベントプロシージャーの共通化
ユーザーフォームに部品コントロールを配置していくとき、同種のコントロールを繰り返し何個も配置することは良くあります。コピペしながらようやく配置し終わったと思ったら、今度はVBAで同じイベントプロシージャーを何個も作成しなければならなくなります。

第24回.イベントプロシージャーの共通化(Enter,Exit)
ユーザーフォームのVBAでは、同じイベントプロシージャーを何個も作成することが多々あります。テキストボックスを複数個配置して同じイベント処理を実装する時、全く同じイベントプロシージャーをコピペで何個も作るといったことが必要になります。その解決方法として前回、第23回.イベントプロシージャーの共通化 WithEventを使った方法を紹介しましたが、



新着記事NEW ・・・新着記事一覧を見る

VBAで写真の撮影日時や音楽動画の長さを取得する|VBA技術解説(1月10日)
ツイッターで出されたVBAのお題をやってみた|エクセル雑感(1月13日)
イベントプロシージャーの共通化(Enter,Exit)|ユーザーフォーム入門(1月13日)
Rangeオブジェクトの論理演算(差集合と排他的論理和)|VBA技術解説(1月10日)
イベントプロシージャーの共通化|ユーザーフォーム入門(1月7日)
コントロールの動的作成|ユーザーフォーム入門(1月6日)
Evaluateメソッド(文字列の数式を実行します)|VBA技術解説(1月5日)
エクスポート(PDF/XPS)|VBA入門(1月2日)
分析関数(OVER句,WINDOW句)|SQL入門(12月25日)
取得行数を限定するLIMIT句|SQL入門(12月21日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ