
VBA抽選ツール「ロッカーの位置を決める君」の開発⑤
前回、最後(40回目)の抽選をしたときに生じるエラーを修正しましたが、全員分のロッカーの位置が決まったのに間違って41回目の抽選をしようとしたときには何らかのメッセージを出せるようにしたいです。さらに抽選をするたびにVBE(VBAのプログラムを書くための専用の画面(エディター))を開いて実行ボタンを押すというのも現実的ではありませんので、Excelのシート状にボタンを配置して、そのボタンを押すと抽選できるようにしたいですね。今日はここをやっていきましょう。
メッセージの表示
ここで、職員全員分の抽選が終わった時、Excelはどうなっているか見てみると、名前の一覧表が記されていたC列の12行目以下のセルが空になっています。つまり、C12セルが空ならこれ以上抽選は必要ない(というかできないですね)ので、これを条件にして分岐させていきましょう。

なので、C12セルが空でなければ抽選を実行、空であればメッセージを表示して終了するようにします。コードは下の通りです。

これを40人全員分の抽選が終わった状態で実行すると

こういうメッセージが表示されて、OKボタンを押すとプログラムが終了します。
Excelシートに実行ボタンを配置
さて、この抽選ツール「ロッカーの位置を決める君」を常に私が使うのなら問題ないですが、そんなことはありません。会社では総務部がこういった社内の備品管理などを担当しているので、このツールを使うのは総務部の社員である場合が濃厚です。その場合、使う人がVBAのことなど全く知らなければ「エディターを開いて○○というプロシージャを実行してください」ではチンプンカンプンです。そこで、誰でも簡単にこのプログラムを実行できるようにExcelのシートにスタートボタンを配置しましょう。
開発タブから挿入→フォームコントロールでボタンを選びます。

そのボタンを押したときに実行したいプロシージャを選び

大きさを決めて「ボタン1」の部分を「抽選スタート」などと書き換えます。これで完成ですが、ちょっとグレーのボタンはワクワク感に欠けますよね…

そこで、好きなイラストを探してきてそれにマクロを紐づけるという方法を取ります。

当選者の表示を「いい感じ」にしたい
ボタンは配置できましたが、これでもまだ抽選のワクワクする感じは出ませんよね。あとは趣味のようなものですが「抽選楽しみ!」と感じられるようなものを作りたいです。
C9セルに当選者の苗字を表示させていましたが、これを図形の中に表示させて、もう少し大きく目立つようにしたいです。そこで、いい情報を見つけたのでこれを参考にしました。
このサイトで説明されている通り、文字を表示させたい図形を作り、その図形を選択した状態で数式バーでセルを選択します。

「当選者は○○さんです!」という風に表示したいのですが、この数式に文字列などを追加することはできませんでした。「見た目重視」でセル結合しまくるような仕事は私のポリシーには反しますが、ここは図形の部分なので見た目がきれいになるように作っていきます。
苗字を表示する図形と同じ色の図形を作り、「当選者は さんです!」と文字を入れておきます。

そして、名前の表示される図形と他の文字が書いてある図形を重ねてグループ化し、それを当選者が出力されるセルC9が隠れるように配置しました。

あとは全体的にカラフルにしてイラストなども配置してみました。

動きとしてはこのような感じです。
もう少し修正していきたい点もあるので、それは次回以降に書いていきます。