Excel

DoEvents(マクロ実行中に画面操作する)

投稿日:2020年4月9日 更新日:

VBAの学習で、DoEventsを使ったシステムを作成したので今回記事にします。

まずは、シート上を以下のように準備します。

そして以下のソースコードを記述し、実行していきます。


Public StopFrag As Boolean                                          '一時停止フラグ
Dim inner As String                                                 'セルに入力する"123"格納用変数
Dim i As Integer                                                    '行位置カウント用変数
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)         'API使用のため宣言

'セルに"123"を記入していく。チェックボックスの状態により一時停止と再開を行う。
Sub スタート()



    i = 1
    inner = "123"


    Do While i < 21                                                 '20行まで
    
            DoEvents                                                '処理中でもチェックボックスが有効になる。
            StopFrag = ActiveSheet.CheckBox1.Value                  'チェックボックスの状態を(True or False)で取得する。

        
            Do While StopFrag = True                                'チェック有     チェックボックスのステータスを確認して中断、再開
            
                Sleep 500                                           'インターバル0.5秒
                DoEvents                                            '処理中でもチェックボックスが有効になる。
                StopFrag = ActiveSheet.CheckBox1.Value              'チェックボックスの状態を(True or False)で取得する。
                
            Loop
            

            
            
            Cells(i, 1).Value = inner                               '"123"をセル(1,1)から順に入力していく。
            i = i + 1                                               '次の行
    
        Sleep 500                                                   'インターバル0.5秒
    
    Loop

End Sub

実行するとA列に「123」が0.5秒おきに自動入力されていきます。

通常マクロ実行中はシート上の操作をしようとしても、画面描画されず、操作を受け付けませが、「DoEvents」を付けることにより、マクロ実行中でもシート上の操作を受け付けるようになります。

「stop」にチェックが無いと「StopFrag」がFalseとなる。
「stop」にチェックが入ると「StopFrag」がTrueとなる。

「stop」にチェックが入ると自動入力が一時停止となります。(見かけ的に止まっているように見えるだけで、裏では何もしないという処理が0.5秒ごとに繰り返されている)

そしてチェックが外れると自動入力が再開されます。

-Excel

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

【SAS】SASで良く使うテクニック。その9 「Alt+E+S+V+E」~縦横の並び替えを行いたいとき~【Excel】

今回はSASで良く使うテクニックということで、縦横の並び替えを行いたい時は、「Alt+E+S+V+E」が役に立つ理由を解説していきます。 具体的な使用場面は、 データセットの場合、カラムは横並びですが …

【SAS】SASで良く使うテクニック。その3 「Ctrl+D」~データセットのオブザベーション数が多いとき~【Excel】

今回はSASで良く使うテクニックということで、データセットのオブザベーション数(行数)が多いときは「Ctrl+D」が役に立つ理由を解説していきます。 (参考:【SAS】SASで良く使うテクニック。その …

For Eachの使い方

今回はVBAのFor Eachについて解説します。 シート上は特に準備することが無く、以下のソースコードを実行します。 Sub For_Each() ‘For Each プロシージャ Dim cell …

【SAS】SASで良く使うテクニック。その6 「名前ボックス」~指定したセルに飛びたい時~【Excel】

今回はSASで良く使うテクニックということで、指定したセルに飛びたい時は「名前ボックス」が役に立つ理由を解説していきます。 以前の記事で「Ctrl+R」や「Ctrl+D」を用いた例を紹介してきました。 …

【SAS】SASで良く使うテクニック。その2 「Ctrl+R」~データセットの列数が多いとき~【Excel】

今回はSASで良く使うテクニックということで、データセットの列数が多いときは「Ctrl+R」が役に立つ理由を解説していきます。 データセットのコンペアを行う場面を想定します。 先に以下の2記事を読んで …