1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Excelでスロットマシンを作ってみた

1
Last updated at Posted at 2026-02-16

はじめに

特に理由はありません。

なんとなく
「Excelでスロット作れそうじゃない?」
と思ってしまい、
気付いたら作っていました。

業務で使う予定はありません。
役にも立ちません。
でも、作っていて めちゃくちゃ楽しかった です。

できたもの

Excel VBA製の3リールスロット

●スタートボタン

●リールごとのストップボタン

●フォルダ内の画像をそのまま絵柄に使用

●スロットの台(フレーム)は常に最前面

●リールはその裏で回転

「それっぽく見える」ことを最優先にしています。

SLOT_2to12_9.5MB.gif

なぜExcelで?

別にExcelじゃなくてもいいです。
ゲームエンジンの方が正直ラクです。

でも、

●どのPCにもある

●図形と画像が使える

●VBAでループ・タイミング制御ができる

この条件が揃っていると、
変なことをしたくなるんですよね。

仕組み①:リールは実は画像2枚だけ

1リールにつき、動かしている画像は 2枚だけ です。

●表示中の画像

●上(または下)に待機している画像

下に流れ切ったら、
その画像を上に戻して 別の絵柄に差し替える。

If ReelY(r, 1) >= WIN_SIZE Then
    ReelY(r, 1) = ReelY(r, 2) - WIN_SIZE
    PicIndex(r, 1) = NextIdx(PicIndex(r, 2))
    ResetReelPicture ws, r, 1, PicIndex(r, 1)
End If

これで、

●画像が何枚あっても

●軽く

●永遠に回り続ける

という、スロットっぽい挙動になります。

仕組み②:ストップは「跨いだ瞬間」に止める

ストップボタンを押した瞬間に止めると、
どうしても不自然になります。

なので、

●ストップ要求フラグを立てる

●表示ライン(Y=0)を 跨いだ瞬間 にピタッと止める

If StopReq(r) Then
    If oldY1 < 0 And ReelY(r, 1) >= 0 Then
        SnapStop ws, r
    End If
End If

これだけで、
一気に「スロット感」が出ました。

仕組み③:一番大変だったのはZOrder

今回、いちばん苦労したのはここです。

●背景

●リール画像

●スロットの台(フレーム)

●ボタン

Excelは、

●画像を作り直す

●差し替える

だけで、前後関係(ZOrder)が簡単に壊れます。

なので、
どのマクロを実行しても必ず直す 方式にしました。

Private Sub FixZOrder(ByVal ws As Worksheet)

    ws.Shapes("SlotPart_BG").ZOrder msoSendToBack

    Dim s As Shape
    For Each s In ws.Shapes
        If Left$(s.Name, 13) = "SlotPart_Reel" Then
            s.ZOrder msoBringToFront
        End If
    Next s

    ws.Shapes("グループ 2627").ZOrder msoBringToFront
End Sub

●背景は常に最背面

●リールはその前

●スロット台は 常に最前面

毎フレームでも呼びます。
力技ですが、これが一番安定しました。

Excelでゲームっぽいものを作るなら、
ZOrder制御は避けて通れない地雷だと思います。

絵柄はフォルダの中身そのまま

/images フォルダに入っている

●png

●jpg

●jpeg

をすべて読み込んで使っています。

For Each f In fld.Files
    Select Case LCase(fso.GetExtensionName(f.Name))
        Case "png", "jpg", "jpeg"
            ImageCount = ImageCount + 1
            ImagePaths(ImageCount) = f.Path
    End Select
Next f

画像を差し替えるだけで、
全く別のスロットになります。

作ってみて思ったこと

●Excel、意外と動く

●VBA、思ったより自由

●何より 作っていて楽しい

業務改善とか効率化とか関係なく、

「これ作ったら面白そう」

で手を動かすのは、
やっぱり大事だなと思いました。

おわりに

役に立つかどうかは分かりませんが、
自分はかなり楽しめました。

Excel、まだまだ遊べます。

実装全体のコードは GitHub に置いています。

VBA コードをそのまま置います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?