ごきげんよう、キャップだ。
だれかアメブロアプリのホーム画面に出てくる、全く当たらない占いの消し方を教えてくれ。
朝見ると気分がかなり左右される。
私は船乗りのくせに、外乱に左右されやすい性格なのである。
それはさておき、プログラミングの話に移る。
約1ヶ月の長い基礎固め段階を経て、ようやく実際のプログラム作成を開始した。
現在作成しているのは、
VBA: 非常配置表自動生成プログラム
Unity: ピンボールゲーム
の2つ。
その日の気分に合わせて好きな方を気ままに触っている。
非常配置表というのは、緊急時の任務や携行品などを定めて船内各所に掲示されているもの。
定員が乗船中かつ全員が自分の職名に合った部屋に入っているのであれば、あらかじめ用意しておいたエクセルのフォームに入力するだけで完成するので作るのは簡単だ。
しかし、増員や減員があったり、部屋の名前と実際の職名が異なる場合(甲板長が甲板手の部屋に入っている)、とてもややこしくなる。
何しろ、完成度の高いフォーム。行を挿入するとまたたくまに見栄えが崩れてしまう。これでは船長のサインがもらえない。
そこで、必要事項を1つのワークシートに入力すればボタン1つで非常配置表が完成する仕組みを作成している訳である。
今のところ、表の体裁を整える部分は概ね完成した。
今まで何度もドラッグ&ドロップやクリックを駆使していた作業が、VBAならばたった1行の指令で出来てしまうというのはとても痛快な気分だ。
課題は表への入力の部分。
VBAはエクセルの機能を言語化するものであるから、フィルター機能で情報抽出するのは比較的簡単に出来た。
しかし、自分の意図する並びに替えるには、オリジナルのアイデアが必要だった。
今回は各職名にスコアを付け、その順でソートすることでこの小課題を解決した。
例えば、職名を船長は10000点、航海士は5000点、機関士は3000点、「一等」が付くとプラス500点、といった具合でスコアを付ける。
するとほぼ偉いもの順(決して機関士より航海士の方が偉いというわけではないので「ほぼ」。笑)に大きいスコアがあたえられるので、後はVBAから操作してソートを実行するだけである。
こうしてまた1つブレイクスルーを起こしてしまった。我ながら末恐ろしい才能である。
あと一週間ほどあれば完成できるだろうか。