お問い合わせ

ExcelのVBAサンプルプログラミング~サイコロっぽいの~

岡山市北区のプログラミング教室 キュリオステーション岡山店でプログラミングを楽しむ女性 VBA

過去に、「まちゼミ」といった無料講座でも行った内容です。

Excelのセルを色付けして、サイコロを出す方法です。

 

よく、サイコロ画像を使ったサンプルプログラムはありますが、Excelの特徴を活かせてセルの色付けで行ってみました。

 

作るのはこんな感じ

Excel でサイコロ表示 Excel のマクロを使った処理例

枠(幅を変える)を決めて枠線を書く

 

実際に見えるサイコロを書いていきますので、セルの幅を調整して、幅、高さを揃えます。

描画するエリアが解るように枠線を入れておくと色付けしやすいです。

 

サイコロの目を描く

サイコロの出目を書いていきます。色を付けてサイコロを作っていきます。

この時、マクロ記録を開始し、マクロを自動生成しておくと簡単にできます。

 

マクロ名は、サイコロの目が1ならば、one とか解りやすいマクロ名をつけていく

クリアするまで、マクロ記録をする。

クリア処理までマクロ記録でプログラミングコードを作ってもらいましょう。

後で、使えます。

以下、1~6の出目の状態を作りながら、マクロ記録して保存していきます。

間違えたらマクロ記録を止め、マクロの開始からやり直しです。

 

スタートボタン、ストップボタンを作る。

ActiveX コントロールを使って、ボタンを作る。

ボタンを描いた後、ボタンの上で、右クリックし「プロパティ」を表示し変更していく。

 

 

スタートボタン

ストップボタン

<意味>

(オブジェクト名)

btnStart

btnStop

解りやすい名前

Caption

Start

Stop

表示される文字

Enabled

True

False

最初の状態

指定したのはこの程度です。

プログラミングしていく

 

動作のイメージです。この通りになるようにプログラミングしていきます。

 

  1. 「スタート」ボタンを押す。
  2. サイコロの出目を変えて表示する。
  3. 「ストップ」を押す。
  4. サイコロの出目決定

 

「開発」タブ、Visual Basicクリック で、プログラミングコード用の画面が表示されるのでプログラミングをしていきます。

必要に応じて、関数(モジュール)の追加や、マクロで記録された内容を変更をおこなっていきます。

 

保存する

 

保存は、xlsm といった拡張子で保存する必要があります。

この保存する箇所で、そのまま、Excel として保存すると、動作しませんので注意が必要となります。

以上、例では、Microsoft Office 2010 で作った内容となりますが、最新バージョンでも同じように作れたかと思います。

 

無料体験でも、この仕組みを実際に作って頂いておりますので、お気軽に、相談して下さい。

 

おまけ

 

スタートボタンが押された時

Private Sub btnStart_Click()

    btnStart.Enabled = False    ‘’ スタートボタンを使用できなくする
    btnStop.Enabled = True    ‘’ ストップボタンを使えるように
    ‘’ 一定間隔でモジュールを呼び出す。
    Application.OnTime Now + TimeValue("00:00:01"), "RndStart"

End Sub

 

ストップボタンが押されたとき

Private Sub btnStart_Click()

    btnStart.Enabled = True    ‘’ スタートボタンを使えるように
    btnStop.Enabled = False   ‘’ ストップボタンを使えないように
    ‘’
    Call RndEnd

End Sub

 

Application.OnTimeで呼び出されるモジュールを作る

Public Function RndStart()
    Dim high As Integer
    Dim low As Integer
    Dim ret As Integer

    StopFlag = False
    high = 6
    low = 1
    Range("B2:I9").Clear		'' クリア

    Do Until StopFlag
        ret = Int((high - low + 1) * Rnd + low)    '' ランダムに1~6を取得
        Call display(ret)       '' 表示
        Call Sleep(50)        '' 少し待つ
        Call dispClear(ret)    '' クリア
        Call Sleep(10)        '' 少し待つ
        DoEvents
        Call Sleep(10)
    Loop
    '' 最後に
    ret = Int((high - low + 1) * Rnd + low)
    Call display(ret)

End Function

 

出目を表示、クリア、終わりの処理

one,two・・・は出目を表示したり消すモジュールで、描画したときにマクロ記録で作られたモジュールになります。

'' 表示する
Private Sub display(intNo As Integer)

    Select Case intNo
        Case 1: Call one(True)
        Case 2: Call two(True)
        Case 3: Call three(True)
        Case 4: Call four(True)
        Case 5: Call five(True)
        Case 6: Call six(True)
    End Select

End Sub

'' クリア
Private Sub dispClear(intNo As Integer)

    Select Case intNo
        Case 1: Call one(False)
        Case 2: Call two(False)
        Case 3: Call three(False)
        Case 4: Call four(False)
        Case 5: Call five(False)
        Case 6: Call six(False)
    End Select

End Sub

'' 終了
Public Sub RndEnd()

    StopFlag = True

End Sub

 

自動生成されたマクロを編集

自動生成で作られたモジュール

Private Sub one()

    Range("D4:G7").Select
    
    With Range("D4:G7").Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("D4:G7").Clear
End Sub

 

 

修正後

Private Sub one(blnFlg As Boolean)
    
    If blnFlg Then
        With Range("D4:G7").Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = 255
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
    Else
        Range("D4:G7").Clear
    End If
End Sub

 

1~6のモジュール全てを修正して使えるようにしていきます。

 

その他、モジュールの先頭部分に、このコードも忘れずに、

しばらく待つ関数、Sleep と、グローバルで使う変数

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private StopFlag As Boolean

 

コピペ機能を活用すると、数分で作成できます。

細かい内容は、考えて見て下さい。

 

Excelの自動化は、マクロ記録で、実際に操作する作業をコード化し、必要な箇所を修正していく

 

そんな作り方が、間違いも少なく、出来上がることかと思います。

是非、挑戦してみてください。

 

 
岡山市北区のパソコン&プログラミング教室|こどもロボット&英語教室
岡山でパソコン・プログラミング教室、ロボット教室をお探しなら、岡山地域で「めっちゃ解りやすい説明ですネ」っとよく言われる岡山市北区のパソコン・プログラミング教室|こどもロボット教室&英語教室のキュリオステーション岡山店へ
岡山市北区のマンツーマン個別指導型パソコン教室
岡山でパソコン・プログラミング教室をお探しなら、「解りやすい説明でした」との感想が多い岡山市北区のパソコン・プログラミング教室【キュリオステーション岡山店】へ、気軽にスマホのことも相談できる教室です。無料体験・無料相談も随時しています。
プログラミングなら岡山市北区のキュリオステーション岡山店にお任せ
岡山でパソコン・プログラミング教室をお探しなら、キュリオステーション岡山店へ、岡山地域で一番の問題解決力「私には解りやすかった」との感想を頂くと喜ぶ岡山市北区のプログラミング教室です。驚きの回答と効率よい学び方の相談などお気軽にお問い合わせ下さい。
岡山市北区のロボット教室&ロボットプログラミング教室【岡山表町教室】
岡山でロボット教室|ロボットプログラミング教室をお探しなら、岡山市で発想力と応用力を養う習い事と話題のヒューマンアカデミーロボット教室「岡山表町教室」へ。準備も片付けも自分で!普段見られない姿が見られるロボット教室
岡山市北区の恥ずかしがり屋な子ども向け英語|英会話教室
岡山でこども英語教室をお探しなら、岡山市北区のシャイで恥ずかしがり屋な子ども向け英語|英会話教室「ヒューマンアカデミーランゲージスクール岡山表町教室」へ、英会話スクールと英語塾のいいとこ取りの仕組みとなっています。気になりましたら無料体験をご予約下さい。
岡山市北区のパソコン教室で安い料金ですねとよく言われる理由
岡山でパソコン教室をお探しなら、岡山市北...

 

 

タイトルとURLをコピーしました