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

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

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

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の自動化は、マクロ記録で、実際に操作する作業をコード化し、必要な箇所を修正していく

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

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

※最新バージョンのエクセルでは、エラーとなり動かない現象があます。
 64ビット版のエクセルは、

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

とするか?

Application.Wait を使って処理するか?

で解決できます。(32ビット版のエクセルを使用しているため、気が付きませんでした。)

同じエクセルでも、少しややこしくなってきましたね・・・

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

 

できる イラストで学ぶ 入社1年目からのExcel VBA できる イラストで学ぶシリーズ
独学するならテキスト本でじっくりしてみるのもよいでしょう。

岡山でパソコン・スマホの基本スキルを身につけるなら、通いやすい仕組みの料金設定も魅力的だとよく言われる岡山市北区のパソコン教室「キュリオステーション岡山店」へ。

同じ料金設定で学生(小中高)も大学生も大人もスキルアップできる初心者向けのプログラミング教室、子ども向けの知的好奇心を育むロボット教室マンツーマン個別レッスンの英会話教室もしているパソコン教室です。

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