エクセルVBAでスロット的な演出を作る方法【Boolean/Do_Loop/DoEvents】

エクセルVBAでスロット的な演出を作る方法【Boolean/Do_Loop/DoEvents】

エクセルVBAでスロット的な演出を作る方法についてご紹介します。
 
下記サンプル①と②は2つで一セットとなりますので、
テストをする時には両方ともコピペをしてください。
 
‘===サンプル①===
 
Dim x As Integer
Dim stp1 As Boolean
 
Sub Start()
 
x = 1
 
stp1 = False
 
Do
 
DoEvents
 
If stp1 = False Then
 
    Range(“A1”) = x
    x = x + 1
 
    If x = 99 Then
        x = 1
    End If
   
Else
 
Exit Do
       
End If
 
Loop
 
End Sub
‘===ここまで===
 
‘===サンプル②===
 
Sub Stop()
    stp1 = True
End Sub
 
‘===ここまで===
 
 
 

解説①Booleanについて

 
Dim ○○ as △△ は、変数○○を△△と言う変数の型に定義をする時に用います。
整数型とか文字列型と言うアレです。
 
今回用いるBooleanは、TrueまたはFalseの2択を格納する変数になります。
 
イメージとしては、○か×かを選択すると言うイメージで考えてもらえればいいかなと思います。
 
このBoolean型の変数を用いることで、その変数がFalseの場合は処理を続ける。
 
その変数がTrueになった場合は、別の処理をさせる。という事が可能になります。
 
スロットの動作で言えば、変数がFalseの場合は表示を繰り返す。変数がTrueになった時にその繰り返し処理を止める。という事で、スロットの動作を実現させることになります。
 
 
 

解説②Do_Loopについて

 
DoとLoopの間の処理を繰り返します。
 
今回のサンプルで言えば、切り替えさせる処理の主な内容は下記の部分です。
 
===主な処理===
    Range(“A1”) = x
    x = x + 1
 
    If x = 99 Then
        x = 1
    End If
===ここまで===
 
〔解説〕
A1セルに変数xの値を入力します。
xの値に1を足します。
xが99になった場合、xを1にします。
 
 
 

解説③DoEventsについて

 
これがスロット的な動作をさせるのに重要な要素になります。
 
スロット動作の場合、ストップボタンを押すというアクションが必要になります。
 
VBAで、この『ストップボタンを押した時に』と言う指示を入れるために、DoEventsを用います。
 
一つ目のボタンに「サンプル①」のマクロを登録。このボタンを「スタートボタン」とします。
二つ目のボタンに「サンプル②」のマクロを登録。このボタンを「ストップボタン」とします。
 
「スタートボタン」を押すことで、A1セルに数字を繰り返し入力し続けます。
「ストップボタン」を押すことで、「サンプル①」の中でDoEventsが発生したと認識をしてくれます。
 
DoEventsの中身は「サンプル②」に書いてある、
    stp1 = True
です。
 
これによって、下記のIF文による分岐でElseの方に移る事が出来ます。
If stp1 = False Then
 
そして、Elseの後にある<Exit Do>は、Do_Loop処理を抜けろ(Loopの後ろへ飛べ)と言う処理です。
 
これで繰り返し処理から抜けてスロット動作を止める事が出来ます。
 

【Boolean/Do_Loop/DoEvents】追記①スロット的な動作で文字を表示させたい時

【Boolean/Do_Loop/DoEvents】追記②止めた時に特定の数字や文字列を表示させたい時

スポンサードリンク

シェアする