見出し画像

タイムレース後のフォローしたい【得点表示教室④】

BOOTHにて、この記事の投げ銭箱を用意しています。

投げ銭をしてくれた方には本記事執筆のために私が製作したエクセルのデータをお渡しします。

よければ、お願いします。

サロです。

本記事では、クイズ大会における「タイムレース後に使用した問題を3問ずつ表示する画面(フォロー)」をエクセルで製作する方法を解説します。


ざっくり説明すると、「マクロ」というエクセルの機能を使ってクリックするだけで変数を変え、それに応じた問題を表示させる、という仕組みを作ります。


この記事では「エクセルの使い方」についてはあまり解説しません。

エクセルの使い方についてはあらゆるサイトで解説されていますので、そちらを参考にしてください。

また、私がエクセルの用語を間違って使用している場合があります。
ご了承ください。

0.はじめに


初めに、今回作るものがどうやって使用するものなのかを説明します。

1.タイムレース終了後、最初の問題番号と最後の問題番号を特定のセルに入力する

2.ボタンを押すと、直前の試合で使われた問題とその答えが3問ずつ表示される

3.最後の問題まで2.を続ける



1.下準備


表示する問題のリストや、表示する画面の見た目を整えます。

「quizlistシート」を作り、問題・解答などを以下のように入力します。

オートフィルを使えば一気に入力できます。


次に、問題表示をするための「followシート」を作り、以下のように幅と高さを整えます。


  • A列の幅:150

  • B列の幅:1500

  • 1,4,7行の高さ:40

  • 2,5,8行の高さ:160

  • 3,6,9行の高さ:50


投映時に見やすくするため、全てのセルの背景を黒にし、B2:B3,B5:B6,B8:B9に白の太線で枠を付けます。

枠で囲ったもののうち、高さが長い方には問題文が、短い方には解答が表示されます。

そのどちらのフォントも「HGP創英角ゴシックUB」に、大きさを24に設定します。

問題文の文字は白に、答えの文字は黄色にします。

こんな感じ。



2.問題表示してみる


マクロとか難しいことは考えず、一旦「問題表示」をやってみましょう。


準備として、「followシート」の右側に以下のような表?を作っておきます。


B2セルには「=IF(H2="","","Q."&OFFSET(quizlist!$B$1,follow!H2,0,))」と、B3セルには「=IF(H2="","","A."&OFFSET(quizlist!$C$1,follow!H2,0,))」と入力します。

こうすると、H2セルに入力された数字に対応した問題と答えが表示されるようになります。


H2セルに「12」と入力した


これができたら、B2:B3セルをコピーして、下の2組にペーストします。


H5セルには「13」を、H8セルには「14」を入れました。


これで、「数字に対応して問題表示をする」ということができました。

おめでとうございます。


3.マクロを組む


ここからが今回のメインです。

初めに、「ファイル、その他のオプション、オプション、リボンのユーザー設定」を順にクリックし、「開発」のところにチェックを入れます。


こうすることで「開発」リボンが現れ、マクロを使うことができます。

「Visual Basic」をクリック、「sheet2(follow)」をダブルクリックしてマクロの入力画面を開きます。

そして、以下のコードをコピペします。

Sub nextfollow()

    Dim a As Long
    Dim b As Long
    Dim c As Long
    Dim x As Long
    Dim y As Long
    Dim z As Long
    
    x = 0
    y = 0
    z = 0
    
    
    If Cells(2, 8) = "" Then
    
        a = Cells(3, 11)
        b = a + 1
        c = a + 2
    
    Else
        a = Cells(2, 8) + 3
        b = Cells(5, 8) + 3
        c = Cells(8, 8) + 3
        
    End If
    
    
    If WorksheetFunction.Or(a > Cells(3, 12), x = 1) Then
        Cells(2, 8) = ""
        x = 1
    Else
        Cells(2, 8) = a
    End If

    If WorksheetFunction.Or(b > Cells(3, 12), x = 1) Then
        Cells(5, 8) = ""
        y = 1
    Else
        Cells(5, 8) = b
    End If
        
    If WorksheetFunction.Or(c > Cells(3, 12), x = 1) Then
        Cells(8, 8) = ""
        z = 1
    Else
        Cells(8, 8) = c
    End If
    
    
End Sub

もっと簡略化できそうなくらい地道な方法でコードを組んでいます。

皆さんが他のコードを組む際、これを参考にしてもいいですが最適なものを見つけたい場合は調べまくりましょう。

また、何回もミスに悩まされ、試行錯誤の末にできたコードですので、私が認知していないミスがあるかもしれません。

もし、正常に動かなかった場合は私にTwitterのDMで連絡をお願いします。

ところで、保存する際に何かのエラーが出ると思います。

現在開いているエクセルのデータを、「マクロ有効ブック」というタイプで新たに保存しないとマクロの機能を使うことができないらしいです。

ファイルの種類を「マクロ有効ブック」にして保存しましょう。


コードを入力し、今回の作業も終わりに近づいてきました。

今作ったマクロをワンクリックで操作するため、ボタンを設置します。


開発リボンの「挿入、ボタン(フォームコントロール)、(このとき、ボタンの大きさを決める)、Sheet2.nextfollow、OK」を順に押します。

ボタンの大きさは「クリック→長押し→離す」で決められます。

これで、マクロを実行してくれるボタンを設置することができました。

ボタンについているテキストが「ボタン1」になっていてめちゃくちゃダサいので「NEXT」に変えておきましょう。

「ボタンを右クリック→テキストの編集」でテキストを変えられます。


4.動作確認


「はじめに」で説明したとおりに操作すると動くか試してみてください。

多分大丈夫なはずです。

H2,H5,H8セルに何も文字が入っていないこと、K3,L3セルにそれぞれ最初と最後の問題番号を入力してからボタンを押すと3問ずつ現れ、最後の問題より後の問題は表示されないと思います。

3問とも真っ暗になってからもう1度ボタンを押すと、最初の問題からまた表示されます。

そういう仕様です。

余分に押さなければ気にしないで良いことなので、余分に押さないでください。


5.おわりに

以上で「タイムレース後の問題フォロー」のエクセル作成の解説を終わります。

ありがとうございました!!

質問、ミスがある、などがあれば私のTwitterアカウントにDMで連絡するようお願いします。


最後に!!!!本記事の投げ銭箱をBOOTHに置いています。

評判が良ければまた記事を書くと思います。

100円以上の投げ銭してくれた方には今回私が製作したエクセルのデータをお渡しします。

良ければ、お願いします。


読んでいただき、ありがとうございました。

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