条件設定ボタンとボックスを配置するユーザーフォームのデザイン

vbanarabikaeeyecatch

エクセル VBAのセルデータ並び替えのボタンを設置します。
ユーザーフォームでデザインしていきます。
コマンドボタン、オプションボタン、テキストボックスなどを使用します。

こんにちは じゅんぱ店長 (@junpa33) です。

セルのデータを操作する並び替え(ソート)は、標準機能として元からエクセルに搭載されています。

今回は、この標準搭載のツールを使わずに、エクセルVBAマクロで並び替えを実行できるようにします。

インターフェイスはユーザーフォームを利用して、並び替え操作をコントロールするボタンを設置します。

エクセルシート上に、フローティング状態で現れているユーザーフォームに設置されたボタンによって、「自由度の高いデータ並び替え」が出来るように、を、考えます。

まず最初に、ユーザーフォームにコントロールを配置するデザイン--いわゆる ”箱” 作り--を行っていきます。

使い易そうかどうかは、主観も含めてそれぞれ個人でご判断ということでよろしくお願いします。

並び替えマクロ 記事階層

この記事番号は1番です。

並び替えボタンの使い易さ=「設置場所」+「出来る内容」

エクセル VBA マクロで並び替えボタンを設置する。

もちろんそれは、並び替え作業の操作性を上げるためです。まず、何処に設置するかです。

エクセルシート上に設置しますか?・・・

それでは、そのシートでしか使えません。またセルがつぶれて邪魔になります。

エクセルリボン上でマクロ登録でボタンを設置しますか?・・・

それでは、エクセル標準機能を使った方が便利です。

利便性と視覚視認性を加えて考えると現状はユーザーフォームでということになります。

折角、ユーザーフォームを利用するのなら、色んな機能を搭載しようと、

  • 並び替え範囲の選択自由度のUP(空白行を無視できる機能)
  • 複数の背景色の並び替え機能
  • 列データキーと背景色キーの複合並び替え
  • 外部のユーザー設定リストのインポート
  • 並び替え後データを、必要部分だけ別シートへの切り出しできる機能
  • 一定の条件下での並び替え取り消し(リスタート)機能

などを、付け加えてみました。

そして、完成品の ”箱(ユーザーフォーム) はコレです。

vbanarabikaep001a

このユーザーフォームは「ソートナビゲーター」という名前です。

サイスとしては、4K画面サイズで作成していますので、1920X1080サイズのモニターですと全貌を表示することは出来ません。なので、スクロールボタンでの対応としています。

それでは、これより ” 箱 ” の作成を行っていきます。

各ボタン・パーツの配置手順

それでは、それぞれのボタンなどを配置していきます。

VBE(ビジュアルベーシックエディタ)上、ユーザーフォームモジュール「オブジェクトの表示」モードでは、非Visual化されたコントロールも表示されます。

ですので、設置パーツはこれがすべてとなります。

vbanarabikaep002a

ユーザーフォーム ベースの設定

ベースとなるユーザーフォーム自身の設定はこのようになります。プロパティを変更します。

vbanarabikaep003a
  • オブジェクト名:ソートナビゲーター
  • Caption:ソートナビゲーター
  • Height:1207.5
  • Width:264
  • ScrollBars:2-fmScrollBarsVertical
  • ScrollHeight:1180
  • StartUpPosition:0-手動

作業するモニターに合わせて、ScrollHeightを調整します。

①データ全体と並び替えデータの範囲指定エリア

データ全体のサイズの把握と、並び替え範囲の指定を行うコントロール部分です。

vbanarabikaep004

「データ並び替えの基本条件の設定」ラベル

基本、ラベルはCaptionの入力と文字サイズだけでOKです。

vbanarabikaep005a
  • オブジェクト名:変更なし(デフォルト)
  • BackColor:白文字使用のため濃色選択
  • Caption:データ並び替えの基本条件の設定
  • Font:使いたい文字タイプで
  • ForeColor:白系の文字色を選定

「並び替えデータシート全体をチェック」コマンドボタン

コマンドボタンのプロパティは、オブジェクト名とCaptionを設定すれば最小限OKです。

vbanarabikaep006a
  • オブジェクト名:データシートチェックボタン
  • BackColor:任意に色選定
  • Caption:並び替えデータシート全体をチェック
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定

「ソートナビゲータ-をリセット」コマンドボタン

「並び替えデータシート全体をチェック」ボタンと同様にプロパティを変更します。

vbanarabikaep007a
  • オブジェクト名:UFリセット
  • BackColor:任意に色選定
  • Caption:ソートナビゲーターをリセット
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定

「並び替えデータ範囲環境」オプションボタン

ユーザーフォーム上に設置したオプションボタンは、「グループ」を作ってあげないとすべてが一体と見なされてしまいます。

つまり、ユーザーフォーム上のオプションボタンは1つしか「ON」にできなくなってしまいます。

vbanarabikaep008a
  • オブジェクト名:データ範囲1
  • Caption:データ範囲はひと塊で空白行は含まない。
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:データ範囲環境
vbanarabikaep009a
  • オブジェクト名:データ範囲2
  • Caption:データ範囲には空白行が含まれる。
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:データ範囲環境
vbanarabikaep010a
  • オブジェクト名:データ範囲3
  • Caption:データ範囲は空白行で挟まれた、より大きなデータ塊の一部。
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:データ範囲環境
vbanarabikaep011a
  • オブジェクト名:データ範囲4
  • Caption:データ範囲はより大きなデータ塊の中の一部分。
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:データ範囲環境

「部分範囲指定実行」ボタンと範囲表示テキストボックス

「部分範囲指定実行」ボタンは今までのコマンドボタンと同じ、テキストボックスはほぼデフォルトです。

vbanarabikaep012a
  • オブジェクト名:部分範囲指定
  • Caption:部分範囲指定実行
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
vbanarabikaep013a
  • オブジェクト名:部分範囲指定表示
  • IMEMode:文字の入力規制はデフォルト設定
  • TextAlign:2-fmTextAlignCenter
  • Value:(空欄)

「範囲指定の罫線は不要なら、消去します」コマンドボタン

「範囲指定の罫線は不要なら、消去します」コマンドボタンも既出のボタンと同様です。

vbanarabikaep014a
  • オブジェクト名:範囲指定罫線消去
  • Caption:範囲指定の罫線は不要なら、消去します
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定

②並び替えキーの設定エリア

並び替えのキーを設定するコントロール部分になります。少し細かくボタン配置をすることになります。

「データ範囲の先頭行は」オプションボタン

「データ範囲の先頭行は」の文字表示自体はラベルで表示しています。

オプションボタンによって、見出しか見出しではないかの選択をします。この2つのボタンでグループを組みます。

vbanarabikaep016a
  • オブジェクト名:先頭行あり
  • Caption:見出しです
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:先頭行
  • Value:False
vbanarabikaep017a
  • オブジェクト名:先頭行なし
  • Caption:見出しではない
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:先頭行
  • Value:False

「並び替え列1から3」のテキストボックス

「並び替え列」のテキストボックスは同じ設定になります。

vbanarabikaep018a
  • オブジェクト名:並び替え列1セル
  • IMEMode:文字の入力規制はデフォルト設定
  • TextAlign:1-fmTextAlignLeft(特に拘りなし)
  • Value:(空欄)

同様に、

並び替え列2のテキストボックス
  • オブジェクト名:並び替え列2セル
  • IMEMode:文字の入力規制はデフォルト設定
  • TextAlign:1-fmTextAlignLeft(特に拘りなし)
  • Value:(空欄)
並び替え列3のテキストボックス
  • オブジェクト名:並び替え列3セル
  • IMEMode:文字の入力規制はデフォルト設定
  • TextAlign:1-fmTextAlignLeft(特に拘りなし)
  • Value:(空欄)

並び替え列の「昇順」「降順」オプションボタン

「昇順」「降順」オプションボタンは並び替え列ごとのグループになります。

vbanarabikaep019a
  • オブジェクト名:昇順1
  • Caption:昇順
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:並び替え列1
  • Value:False
vbanarabikaep020a
  • オブジェクト名:降順1
  • Caption:降順
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:並び替え列1
  • Value:False

同様に

並び替え列2の「昇順」
  • オブジェクト名:昇順2
  • Caption:昇順
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:並び替え列2
  • Value:False
並び替え列2の「降順」
  • オブジェクト名:降順2
  • Caption:降順
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:並び替え列2
  • Value:False
並び替え列3の「昇順」
  • オブジェクト名:昇順3
  • Caption:昇順
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:並び替え列3
  • Value:False
並び替え列3の「降順」
  • オブジェクト名:降順3
  • Caption:降順
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:並び替え列3
  • Value:False

並び替え列の「列確定」と「列消去」のコマンドボタン

並び替え列単位の設置です。

vbanarabikaep021a
  • オブジェクト名:並び替え列1確定
  • Caption:列1確定
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
vbanarabikaep022a
  • オブジェクト名:列1消去
  • Caption:列1消去
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定

同様に

並び替え列2の「列2確定」
  • オブジェクト名:並び替え列2確定
  • Caption:列2確定
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
並び替え列2の「列2消去」
  • オブジェクト名:列2消去
  • Caption:列2消去
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
並び替え列3の「列3確定」
  • オブジェクト名:並び替え列3確定
  • Caption:列3確定
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
並び替え列3の「列3消去」
  • オブジェクト名:列3消去
  • Caption:列3消去
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定

「背景色選択1から3」のテキストボックス

「背景色選択」のテキストボックスは同じ設定になります。

vbanarabikaep023a
  • オブジェクト名:背景色選択1
  • IMEMode:文字の入力規制はデフォルト設定
  • TextAlign:1-fmTextAlignLeft(特に拘りなし)
  • Value:(空欄)

同様に

背景色選択2のテキストボックス
  • オブジェクト名:背景色選択2
  • IMEMode:文字の入力規制はデフォルト設定
  • TextAlign:1-fmTextAlignLeft(特に拘りなし)
  • Value:(空欄)
背景色選択3のテキストボックス
  • オブジェクト名:背景色選択3
  • IMEMode:文字の入力規制はデフォルト設定
  • TextAlign:1-fmTextAlignLeft(特に拘りなし)
  • Value:(空欄)

背景色選択の「昇順」「降順」オプションボタン

「昇順」「降順」オプションボタンは並び替え列ごとのグループになります。

vbanarabikaep024a
  • オブジェクト名:昇順4
  • Caption:昇順
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:背景色選択1
  • Value:False
vbanarabikaep025a
  • オブジェクト名:降順4
  • Caption:降順
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:背景色選択1
  • Value:False

同様に

背景色選択2の「昇順」
  • オブジェクト名:昇順5
  • Caption:昇順
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:背景色選択2
  • Value:False
背景色選択2の「降順」
  • オブジェクト名:降順5
  • Caption:降順
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:背景色選択2
  • Value:False
背景色選択3の「昇順」
  • オブジェクト名:昇順6
  • Caption:昇順
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:背景色選択3
  • Value:False
背景色選択3の「降順」
  • オブジェクト名:降順6
  • Caption:降順
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:背景色選択3
  • Value:False

背景色選択の「色確定」と「色消去」のコマンドボタン

背景色選択単位の設置です。

vbanarabikaep026a
  • オブジェクト名:背景色選択1確定
  • Caption:色1確定
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
vbanarabikaep027a
  • オブジェクト名:色1消去
  • Caption:色1消去
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定

同様に

背景色選択2の「色2確定」
  • オブジェクト名:背景色選択2確定
  • Caption:色2確定
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
背景色選択2の「色2消去」
  • オブジェクト名:色2消去
  • Caption:色2消去
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
背景色選択3の「色3確定」
  • オブジェクト名:背景色選択3確定
  • Caption:色3確定
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
背景色選択3の「色3消去」
  • オブジェクト名:色3消去
  • Caption:色3消去
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定

③ユーザー設定リスト・並び替え優先選択エリア

ユーザー設定リストの適用やキーの優先方法をコントロールする部分です。

「並び替えにユーザー設定リストを使用」オプションボタン

「並び替えにユーザー設定リストを使用」オプションボタンも「使う」「使わない」の2択のオプションボタンとなります。

vbanarabikaep029a
  • オブジェクト名:ユーザー設定リストなし
  • Caption:設定リストを使わない
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:CustomOrder
  • Value:False
vbanarabikaep030a
  • オブジェクト名:ユーザー設定リスト使う
  • Caption:設定リストを使う
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定
  • GroupeName:CustomOrder
  • Value:False

「ユーザー設定リスト」フレーム

オプションボタンの「ユーザー設定リスト使う」が「ON」の時、この「ユーザー設定リスト」フレームを可視化し、「OFF」の時不可視となるようにします。

vbanarabikaep039a
  • オブジェクト名:ユーザー設定リストフレーム
  • Visible:False

「ユーザー設定リストの列キー設定」オプションボタン

ユーザー設定リストを各列キーに設定するかどうかを設定します。

vbanarabikaep031a
  • オブジェクト名:ユーザー設定リスト列1ON
  • Caption:ON
  • Font:使いたいフォントで
  • ForeColor:任意に色選定
  • GroupeName:CustomOrder列1
  • Value:False
vbanarabikaep032a
  • オブジェクト名:ユーザー設定リスト列1OFF
  • Caption:OFF
  • Font:使いたいフォントで
  • ForeColor:任意に色選定
  • GroupeName:CustomOrder列1
  • Value:False

同様に

ユーザー設定リスト並び替え列2 ON
  • オブジェクト名:ユーザー設定リスト列2ON
  • Caption:ON
  • Font:使いたいフォントで
  • ForeColor:任意に色選定
  • GroupeName:CustomOrder列2
  • Value:False
ユーザー設定リスト並び替え列2 OFF
  • オブジェクト名:ユーザー設定リスト列2OFF
  • Caption:OFF
  • Font:使いたいフォントで
  • ForeColor:任意に色選定
  • GroupeName:CustomOrder列2
  • Value:False
ユーザー設定リスト並び替え列3 ON
  • オブジェクト名:ユーザー設定リスト列3ON
  • Caption:ON
  • Font:使いたいフォントで
  • ForeColor:任意に色選定
  • GroupeName:CustomOrder列3
  • Value:False
ユーザー設定リスト並び替え列3 OFF
  • オブジェクト名:ユーザー設定リスト列3OFF
  • Caption:OFF
  • Font:使いたいフォントで
  • ForeColor:任意に色選定
  • GroupeName:CustomOrder列3
  • Value:False

「並び替えの方法」オプションボタン

列キー・色キー・複合の3択のオプションボタンの設定です。

vbanarabikaep033a
  • オブジェクト名:列並び替え
  • Caption:列キーの単独並び替え
  • Font:使いたいフォントで
  • ForeColor:任意に色選定
  • GroupeName:キー並び替え
  • Value:False
vbanarabikaep034a
  • オブジェクト名:色並び替え
  • Caption:色キーの単独並び替え
  • Font:使いたいフォントで
  • ForeColor:任意に色選定
  • GroupeName:キー並び替え
  • Value:False
vbanarabikaep035a
  • オブジェクト名:複合並び替え
  • Caption:複合キーでの単独並び替え
  • Font:使いたいフォントで
  • ForeColor:任意に色選定
  • GroupeName:キー並び替え
  • Value:False

「並び替えの優先順位は」フレーム

「複合キーでの並び替え」オプションボタンを「ON」にした時に表示されるフレームです。

vbanarabikaep040a
  • オブジェクト名:複合キーフレーム
  • Visible:False

「並び替えの優先順位は」オプションボタン

列・色の優先を選択します。

vbanarabikaep036a
  • オブジェクト名:キー優先列
  • Caption:列を優先します
  • Font:使いたいフォントで
  • ForeColor:任意に色選定
  • GroupeName:キー優先
  • Value:False
vbanarabikaep037a
  • オブジェクト名:キー優先色
  • Caption:色を優先します
  • Font:使いたいフォントで
  • ForeColor:任意に色選定
  • GroupeName:キー優先
  • Value:False

「並び替え実行」コマンドボタン

「並び替え実行」コマンドボタンの設定です。

vbanarabikaep038a
  • オブジェクト名:並び替えGO
  • BackColor:任意に色選定
  • Caption:並び替え実行
  • Font:使いたいフォントで
  • ForeColor:任意に色選定

④データ切り出し、リスタート機能エリア

並び替え後の操作をコントロールする部分になります。

「並び替えデータ切り出し機能」のラベル、テキストボックス

「並び替えデータ切り出し機能」のラベルはラベル上でクリックするとデータ数値を表示するようにします。

vbanarabikaep042a
  • オブジェクト名:切り出し全行数
  • Caption:ここをクリックすると切り出し可能な最大行数を表示します。
vbanarabikaep043a
  • オブジェクト名:切り出し希望行数
  • Font:使いたいフォント
  • FontColor:使いたいフォント色
  • IMEMode:文字の入力規制はデフォルト設定
  • TextAlign:1-fmTextAlignLeft(特に拘りなし)
  • Value:(空欄)

「切り出し実行」コマンドボタン

「切り出し実行」コマンドボタンのプロパティ設定です。

vbanarabikaep044a
  • オブジェクト名:データ切り出し実行
  • BackColor:任意に色選定
  • Caption:切り出し実行
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定

「リスタート機能」のオプションボタン

並び替えを元に戻す機能です。先頭行が見出しかどうかの2択を設定します。

vbanarabikaep045a
  • オブジェクト名:先頭行は見出し行
  • Caption:先頭行は見出し行
  • Font:使いたいフォントで
  • ForeColor:任意に色選定
  • GroupeName:リスタート
  • Value:False
vbanarabikaep046a
  • オブジェクト名:先頭行はデータ行
  • Caption:先頭行はデータ行
  • Font:使いたいフォントで
  • ForeColor:任意に色選定
  • GroupeName:リスタート
  • Value:False

「リスタート実行」コマンドボタン

「切り出し実行」コマンドボタンのプロパティ設定です。

vbanarabikaep047a
  • オブジェクト名:リスタート
  • BackColor:任意に色選定
  • Caption:リスタート実行
  • Font:使いたい文字タイプで
  • ForeColor:任意に色選定

その他のテキスト(文字)表示

その他の文字表示については、ラベルを使って表示します。

プロパティ設定としては、Captionの項目に表示させたい文言を記述します。

並び替えのボタンをユーザーフォームに設置する まとめ

ユーザーフォームのデザインは多様です。

今回は、設定項目も細かくたくさんありましたので、ユーザーフォームのサイズも大きくなりました。

ユーザーフォーム上のコントロール配置は自由ですので、自分なりに使い易いように変更していただくことも可能です。

ご自分のアイデアで作ってみてください。

ユーザーフォーム「ソートナビゲーター」に設置したコントロールのイベントコードの解説についてはこの記事をご覧ください。

vbanarabiufcodeeyecatch UserFormに設置したコントロールのイベントコードを記述する

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

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