大喜利マクロを作ろう①

大喜利が強くなりたい。

日本人は技術力、勤勉さ、漫画・アニメ文化で世界から高く評価されているが、「お笑い」こそ日本が世界の中で圧倒的先進国として位置付ける文化じゃないかと本気で思っている。

もちろん世界中に面白い人がわんさかいるし、その面白さで生計を立てる職業が世界中に存在する。だが、日本にはその職業の人たちが面白さを競い合う賞レースや競技が大小さまざまな規模で高頻度で行われている。その中でも最もシンプルでストイックな競技が大喜利だ。

私はお笑いが好きで、小さい頃からずっとお笑いを観てきた。お笑い芸人に憧れて、本気で目指した時期もあった。
しかし、好きだからこそ、憧れだけでは食べていけない世界であることを知っていたし、自分の才能が通用する世界じゃないことも知っていた。
それなら大人しく観衆に回って、ただただプロが供給してくれる笑いを享受していればいいのだが、やっぱり好きなものには触れていたい。

ということで、ただ今勉強中のVBAで大喜利マクロを作ってみよう!

完成イメージ

①Excelを起動するとデータベース(以下、DB)からランダムで大喜利が出題されるインプットボックスが出現し、回答を入力する。
②大喜利の回答は題ごとに集計され、回答内容と回答日が記録される。

①大喜利データベース作成
とりあえず大喜利のお題をまとめたDBを作成することから始めます。
たぶんネット上にあらゆるお題をまとめたサイトとかあると思うけど、せっかくだから楽しみながらDBを作っていきたいので以下のコンテンツを観たり聞いたりしながらexcelに入力していきます。

大喜る人たち
GERA「ママタルトのラジオ母ちゃん」内コーナー「ガチの大喜利」
・IPPONグランプリ
・ダイナマイト関西

やってみたらなかなか大変な作業だった・・・。あとは普通にYouTubeもラジオ母ちゃんも面白いから楽しんじゃう。大喜利のお題をキャッチアップするだけでいいのに。分かっててやってるけど。

とりあえずDBは随時更新するとして、一旦お題を表示するインプットボックスを作ります。

②大喜利出題・回答ボックスを表示させる
DBからランダムでお題を抽出してインプットボックスのメッセージ欄に表示するためにはRnd関数を使うらしい。今回は範囲を指定したうえでランダム抽出するので、その他にInt関数(指定した数値の整数部分を、小数点以下切り捨てにして返す)を組み合わせてコードを書く必要がある。
また、Rnd関数を使う前にRandomizeステートメントを実行しないとランダムと言いつつも毎回同じ抽出パターンになってしまうみたいなので、それも忘れないようにしないと。

Sub お題表示()
    '乱数系列初期化
    Randomize
    'Long型変数mに大喜利お題シートのA列でデータが入力されている最終行の番号を代入
    Dim m As Long: m = Cells(Worksheets("大喜利お題").Rows.Count, 1).End(xlUp).Row
    'Long型変数nにデータがあるセルの範囲内で行番号をランダム生成した数字を代入
    Dim n As Long: n = Int((m - 1 + 1) * Rnd + 1)
    'ランダムで大喜利お題を出題するインプットボックスを表示する
    InputBox (Cells(n, 1))
End Sub

ここまで記入した時点で、とりあえず以下のかたちにはなった。

とりあえず今回はこの辺にして、あとはインプットボックスのレイアウトが味気ないのでそのあたりを直しつつ、回答日データを集計する仕組みを作っていきます。

この記事が気に入ったらサポートをしてみませんか?