【VBA】ボウリングスコア自動計算

目次

スコアの計算について

どうも。天丼のご飯は小盛にしがちのjimです😋

今回は、VBAで『ボウリングスコア自動計算』するヤーツを作ったって記事です。

というか、ボウリングのスコアを計算できる人なんて、結構年いってる人しかいないよね?

皆さんは、スコアを計算できますか?

手書きのスコア表を置いてるボウリング場あるのかな?多分、一応あるか😅

ビリヤードの『ボウラード』ってゲームをやる人は計算できるよね。

ビリヤード場は、ペーパーしかないもん。

もう10年以上撞いてないけど、アベレージ160~180ありましたよ。(ビリヤードね)

連マスとかもする感じ♪

あ、それで作った自動計算ってのが↓

ボウリングスコア自動計算(ツイッターup動画)

ボウリングスコアの計算はね、、、

通常は、足し算するだけ。

ストライクをとると、2投先まで点数の対象になります。

例えば、ストライク⇒1ピン倒⇒1ピン倒だったら、12点になります。(10+1+1=12)

要するに、ストライク取ったら、2投先まで気合を入れろってこと👊

何故、ターキー(3連続ストライク)をとると『ざわざわ』するのかっていうと、僅か3投で60点以上が(30+20+10=60点)保証されるからです。すごい😝

そして、スペアは1投先まで点数の対象になります。

そうそう、要するに、スペア取ったら、1投先まで気合を入れろってこと👊

 

画像(ユーザーフォーム)

スコアの計算くらいスプレッドシートでやればよいのだけど、それだと絵面がショボい😖

今の時代、「ばえ~」なのだから🍹

といっても、ただのスコア計算なのだから、頑張ったところでショボい。。。

スコア表の上に数値用のラベルを置いて、更にスペア&ストライクのマーク(画像)を非表示にして置きました。

んで、ラベルに数値入れたり、色を変えたり、表示したりと、、、

実は、まあまあ面倒なことやってます😝

あと、少しでも「ばえ~」と思って用意したアニメーションの一部。

いつものように図形を組み合わせて作りました。

シュウォッチ』や『ジャンケンマン』ほどではないが結構手間😓

 

計算

これも、スプレッドシートを使った方が簡単にできるが、ラベルのみで計算しました。

ゲームのようにループを作って、その中でごにょごにょする感じ。まあ、ゲームと一緒かな🤔

①ラベルに数値を入れる関数を用意。

②ラベルの数値を計算する関数を用意。

③Doの中にSelectを21投分用意して①を呼び出す。

④Selectを抜けたら②を呼び出す。

Private Sub スコア()
Dim 投 As Long
    投 = 1
    Do While 投 < 22
        Select Case 投
            Case 1
                Call ラベル(投)
            Case 2
                Call ラベル(投)
            Case 3
                Call ラベル(投)
            Case 4
                Call ラベル(投)
            Case 5
                Call ラベル(投)
            Case 6
                Call ラベル(投)
            Case 7
                Call ラベル(投)
            Case 8
                Call ラベル(投)
            Case 9
                Call ラベル(投)
            Case 10
                Call ラベル(投)
            Case 11
                Call ラベル(投)
            Case 12
                Call ラベル(投)
            Case 13
                Call ラベル(投)
            Case 14
                Call ラベル(投)
            Case 15
                Call ラベル(投)
            Case 16
                Call ラベル(投)
            Case 17
                Call ラベル(投)
            Case 18
                Call ラベル(投)
            Case 19
                Call ラベル(投)
            Case 20
                Call ラベル(投)
            Case 21
                Call ラベル(投)
        End Select
        Call 計算(投)
    DoEvents
    Loop
End Sub

ちなみに、①の中にもループがあって、数値の入力があるまで抜けない仕組み。

その数値は、パブリックの変数。マウス操作かキーボード操作で数値を変更といった感じ。

③⇒①⇒④⇒②の繰り返しで、変数『投』が1ずつ増えていく(ストライクの場合は+2&アニメーション)っていう。

うん、そんな感じ🙂

 

最後に

VBAで、『ボウリングスコア自動計算』を作ったという記事でしたが、どうでしたか?

実は、まあまあ手間がかかってるっていうね😆

『こいつ暇だな~』と思いました?

違う違う。いや、暇か?

まあ、その話は置いておいて、、

手間なこともサクサクできるから、そういう発想ができるから、SEができるわけで。。。

仕事では、もっと複雑なこと考えることもある、、、

し、ゲームより簡単なものもあります。

大体、ゲームより簡単なんですけどねヽ(・ω・)/ズコー

んじゃ、またねぇ✋