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

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

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を使った方法を紹介しましたが、

第25回.簡易音楽プレーヤーの作成
VBAにも音楽を!ということでVBAで音楽再生するVBAクラスを作成しました。VBAで音楽再生するクラスを作成 そこで、このクラスを使い簡易的な音楽プレーヤーを作ってみました。あまり本格的なものは作れませんし、良いソフトが沢山ありますので自作しても仕方ありません。

第26回.プログレスバーを自作する
VBAで時間のかかる処理の場合、ユーザーはいつ終わるか分からずただひたすら待っているしかありません。そのような場合はVBAの進捗を画面に表示して、今なにをしているか、後どれくらいで終わるかを知らせることで、ユーザーのイライラはかなり解消されます。

第27回.インクリメンタルサーチの実装
VBAのユーザーフォームで大量のリストから選択する場合、リストが大量にあると単なるコンボボックスやリストでは探すのが大変になってしまいます。そこで、インクリメンタルサーチを実装してみます。インクリメンタルサーチとは、検索したい単語をすべて入力してから検索するのではなく、文字を入力するたびに即座に候補を表示させる機能です。

他のカテゴリーでユーザーフォームを使っている記事
VBAでWindowsMediaPlayerを使い動画再生する
VBAで動画を再生する方法を何通りか試してみます。VBAで直接動画を再生できるわけではないので、コントロールのWindowsMediaPlayerを使って再生します。動画を再生するだけなら簡単そうなのですが、実際にはいろいろと問題がありました。

VBAでWEBカメラ操作する
VBAでWEBカメラを操作してみます。WEBカメラの映像を映し出し、任意の時点でスナップショットをとるようにしています。エクセルでやる実用的な意味はほとんどありませんが、技術的な興味でやってみた自身の覚え書きになります。

Excel将棋:マクロVBAの学習用
Excelで将棋を作ってみましょう。今やコンピューター将棋はプロをしのぐ強さです。しかし、Excelでそのようなソフトを作ろうと言うのではありません。と言いますか、残念ながら私には作れません、、、ExcelマクロVBAの学習素材として将棋を作ってみましょう。

ユーザーフォームにツールバーやメニューバーを設置する

必要になる事もあまり無さそうなので、あらためて記事にせずにリンクだけ置いておきます。
以下は外部サイトになります。

UserFormでツールバーを使う

メニューバー by VBA(Win32API)



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

Pythonの引数は参照渡しだが・・・|Python入門(9月21日)
lambda(ラムダ式、無名関数)と三項演算子|Python入門(9月20日)
関数内関数(関数のネスト)とスコープ|Python入門(9月18日)
関数の定義(def文)と引数|Python入門(9月18日)
組み込み関数一覧|Python入門(9月17日)
辞書(dict型)|Python入門(9月16日)
入力規則への貼り付けを禁止する|VBA技術解説(9月16日)
タプル(tuple型、イミュータブル)|Python入門(9月15日)
リスト(list型、配列)|Python入門(9月14日)
文字列操作(str型)|Python入門(9月13日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




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


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



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