***********************************************************************************************
チーム分けツール 制作秘話
Copyright(C) 2021 by しげるがもげる
***********************************************************************************************
◆はじめに
このドキュメントには、制作に関わっての作者の思いや苦労が書いてあります。
技術的な細かいことに興味のない方は、読み飛ばしてください。
エクセルでマクロを組んでみようかなと思われる方は、読むと参考になる部分があるかもしれません。
◆制作秘話
運動会に向けて、赤白のチーム分けを考えていた。
毎年、いつも行う作業で、この時もエクセルのシート上でドラッグ&ドロップで動かしていた。
一応完成したので、きちんと清書して印刷したところ、問題点が見つかった。
それで、また少し調整しなければいけなくなった。
ほぼ、最初からやり直しである。
「クリックするだけで、左右に分かれるようなものがあるといいなあ。」
そう思って、これを作り始めました。
一応完成してから、いろいろ考えていたら、バスケットボールのチーム決めのことを思い出した。
これも、ほぼ毎年やっていることだ。 全部でだいたい6チーム決める。
これも何とかしたい。
そう思って、6チーム用(45人)を作りました。
それから,数年経って,「90人までの対応にならないか。」という依頼があったので,
10チーム用(100人)も作りました。
それから,更に3年ほど経って,「20チームで上下2段が欲しい。」という依頼があったので,
20チーム用(300人)も作りました。
◆工夫や苦労など
<データ移動のさせ方>
最初に考えたのは,紅白用だったので,データの移動は,操作性の簡単な『1クリックで平行移動』を基本としました。
1.紅白用(2チーム)の場合
2チームしかないので,移動させる場所は「こっちか,あっちか」の2者択一になります。
つまり,データのあるなしに関わらず,2つの場所のデータを単純に入れ替えればできます。
それで,移動させたいNoでも,移動先のNoでも,どちらをクリックしてもいい仕様になりました。
ただし,そのままでは,完成した時に見にくいので,清書用のシートを用意しました。
2.6チーム用
6チームになると,どこに移動させるかを決めなければなりません。
そこで,移動先のNoを1クリックするように,仕様を変えました。
平行移動なので,クリックした場所を覚えておいて,データのある場所をさがして,
その2つの場所のデータを入れ替えることでできます。
これも,清書用のシートを用意しました。
3.10チーム用
これは,6チームを拡張させただけなので,操作は同じです。
4.20チーム(上下2段)
横に20チームなら,6チームを拡張させればできるのですが,問題は上下2段です。
こうなると,単純な平行移動はできません。
そこで,移動元をクリックし,移動先をクリックする,2クリック操作にしました。
セルにデータがあるときは移動元と判断し,セルにデータがないときは移動先と判断することにしました。
こうすることで,間違って操作した時(データのあるところを連続で2箇所クリックした場合)の,データの上書きを防ぎます。
移動先が自由に選べるので,上から詰めて並べることができます。それで清書用のシートを廃止しました。
<項目数やデータ数を、リアルタイムで計算する>
チェックボックスをチェックしたときやデータを動かしたとき、項目数やデータ数をリアルタイムで計算するようにしました。
こうすることで、清書のとき、それぞれのチームのデータ件数に合わせて表を作ることができます。
<列のオートフィット>
行で範囲指定してオートフィットを行う場合は、Row("1:10").RowHeight=20 のようにするのですが、
列になると、column("A:J").ColumnWidth=20 のようになって、計算式で出した数値では設定できません
実現する方法として、For Next 文で1つ1つやっていく方法がありますが,あまりにもスマートさに欠けるので、
ユーザー定義関数で数字をアルファベットに変換するものを作りました。
それに加えて、Type命令で、ユーザー定義型の変数の宣言を作りました。
これで、列のオートフィットも、範囲指定でやれるようになりました。
◆最後に
ここまで、熱心に読んでくださってありがとうございました。
プログラムを組んだことのない方には、わかりにくい内容だと思いますが、これを機会にエクセルの
マクロに興味を持っていただければ、と思っています。
エクセルは、本当に楽しいツールです。自分の思いや考えが表現できます。
そんなエクセルに、日々、感謝です。