並び替えマクロを作成するVBAコードの概要

vbanarabigaiyoueyecatch

エクセルVBAで並び替えマクロのコードを作成します。
13記事にて説明しますが、その各記事の概要になります。
全体の流れを掴んでいただければと思います。

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

VBAを使って、独自のエクセルのセルデータの並び替えを行うツールを作成します。

エクセルには標準ツールで、非常に便利な並び替えツールが存在します。そして、逆に汎用的であるが故の使い方のまどろっこしさも、また、同時に存在しています。

これから、個人利用的にカスタマイズできる並び替えツールを、エクセルマクロで作成していきたいと思います。

並び替えマクロツールを作成するには結構長丁場になりますので、先に、コード作成の記事の進め方を説明しておきます。

並び替えマクロの作成コードの概要

並び替えマクロの作成コードの説明は、項目別に13記事に渡って説明して行きます。

第1回.UIとなるユーザーフォームを作る。

最初に、並び替えの条件を設定入力するユーザーフォームを作成します。

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

ユーザーフォームにコントロールを配置するデザインを行っていきます。この回は箱作りになります。

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

第2回.ユーザーフォームでのイベントコードを組み立てる

ユーザーフォームに設置したそれぞれのボタンやボックスが、クリックされた時、入力された時に次に動作するためのVBAコードを記述します。

ボタン数が多いのと、ボタン同士が連動して動くので、ボタンを間違わないように注意して記述していきます。

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

第3回.並び替えの条件を入れる変数の設定方法を決定する

エクセルの標準の並び替えでは不可能な部分でも、このツールでは、ユーザーフォームを使って並び替え条件を指定するということで、別シートをまたいで並び替えが出来ないかも考えます。

変数の適用範囲(スコープ)を規定していきます。

vbanarabisheetmatagieyecatc 別シートにまたぐのは可能?並び替えのコード設計

第4回.ユーザーフォームを表示するコードと入力値の保存

ユーザーフォームに入力した値の保存状態は、ユーザーフォームの表示について、どのコードに何を使うかによっても変わってきます。

入力値の保存とユーザーフォームの表示に利用するコードの関係もチェックしておきます。

vbanarabiufhyoujieyecatch 条件入力用のユーザーフォーム 表示・非表示と値の保存

第5回.並び替えのセル範囲を指定するVBAコードを考える

出来るだけ多くのパターンの並び替えを行なえるようにするためには、エクセル標準搭載の並び替えでは十分ではありません。

空白行を含んでいる範囲、大きなデータの一部分の範囲、結合セルを含むデータの場合などにも範囲設定が出来るようにしていきます。

vbanarabihanieyecatch セル範囲内の空白行や結合にも対応したSortオブジェクトVBA

第6回.複数の列キーを設定できるVBAコードを設計する

旧式の並び替え(Sortメソッド)の場合は、列キーは3個まで設定することが出来ました。

今現在の、Sortオブジェクトの場合はキーを設定できる個数は無制限です。

この並び替えマクロでも、実用的な観点から考えて、4つ以上のキーを設定しても並び替えとしての利用価値は高くないと判断しています。

ここでは、列キーを3つまで設定できるようにコードの設計をしています。

vbanarabiretukieyecatch 複数列に自由にキーを設定するVBA。Sort条件設定のコード

第7回.複数の背景色キーを設定できるVBAコードを設計する

Sortオブジェクトでは、背景色を並び替えにキーとして利用できるようになりました。

今までは、値の上位下位でしか並び替えが出来ませんでしたが、背景色をキーにすることで、全く違った観点での並び替えが可能になったということです。

例えば、生地柄別に「アニマル柄」「ヘリンボーン」「ペイズリー」を背景色分けして並べ替えるとか・・・

この背景色並び替えのキーも3色設定できるように設計しています。

vbanarabiirokieyecatch 複数の背景色キーを指定できるVBAコードの組み立て

第8回.種類の違う並び替えキーを使う場合の優先キーをコード指定する

Sortオブジェクトを利用することで、それまでの並び替えにはなかったことを規定する必要があります。

列キーと背景色キーを併用して使用する場合、「優先キーを列キー」と「優先キーを背景色キー」では、並び順に大きな違いが発生することになります。

この並び順の違い(優先するキーの指定)をVBAコードでコントロールする必要があります。

vbanarabihukugoukieyecatch 種類の違うKeyの同時指定はどちらが優先?VBAでは記述順

第9回.ユーザー設定リストの登録と利用の不便さを解消する

自分でオリジナルな並び順を設定することが出来るツールで、ユーザー設定リストというものがります。

使いこなせている人には、非常に便利なツールになっていると思います。

けれども、エクセル標準並び替えツールでも、それ用のユーザー設定リストなのですが、使い勝手が良くありません。

また、エクセルマクロで利用するに当たって、シンプルなVBAコード組みをしてしまうと、1度っ切り、使い捨て程度のコード組みにしかなりません。解決策が必要になります。

vbanarabiyuzaseteyecatch 共有できない問題も解決!ユーザー設定リストの外部ファイル導入法

第10回.入力された条件設定を取りまとめて順次実行する

ユーザーフォームを介して入力されて来た並び替え条件を、処理していくハブの役割を持ったプロシージャーを設定します。

このプロシージャーの起動は、ユーザーフォームの並び替え実行ボタンと連動することになります。

vbanarabitoukatueyecatch 複数条件をまとめるプロシージャーを作成する

第11回.並び替え結果を切り出す機能を付加する

複数の条件を設定して並び替えたデータは、コピーされて別の安全なシートにペーストされることになります。

この一連の操作は単純ではありますが、結構面倒くさいものです。

この操作・作業を1クリック(1ボタン)で出来るようにします。

安全なシートを新たに作成してそちらに、並び替え範囲を張り付ける機能です。

vbanarabikekkacuteyecatch 結果の切り出し機能 必要範囲をコピーし別シートに張付け

第12回.並び替えたデータシートをデフォルトの状態に戻す機能

並び替えを行なって、データを ” ぐちゃぐちゃ ” にして、元に戻せなくしてしまうのは、

「並び替えた条件を正確にリバースできない!」というのが原因になっているケースが多いです。

ここで付け加えた機能は、1ボタン・1クリックで「並び替え前のデフォルト状態」に戻してしまう機能です。

ただし、何でもかんでも戻せるというわけではなく、少々の条件が必要になりますので、その条件クリアが前提です。

vbanarabirestarteyecatch 簡単に並びを解除するリスタート機能。再実行も即可能になる

第13回.並び替えマクロツールの全コード集

この並び替えマクロツールの作成VBAコードを全体の流れを通して確認チェックする用になっています。

コードそのままコピペも可能です。

vbanarabizencodeeyecatch 並び替えマクロツール作成の全コード集

まとめ

並び替えマクロツールの作成についての記事全体の概要を説明しました。

より分かりやすく読んでいただくために、順番に進めていただくことをお勧めします。

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

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

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

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

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min