- ベストアンサー
[ExcelVBA] コマンドボタンを押しっぱなしにしている間、マクロを繰り返す方法
AccessVBAでは、コマンドボタンで「AutoRepeat」プロパティを使えば、 コマンドボタンを押しっぱなしにしている間、繰り返して処理を続けます。 しかし、 Excelの場合、コマンドボタンにAutoRepeatのような「繰り返しプロパティ」がありません。 このような場合、どのように同様な処理を行うのでしょうか? 簡単な作動例のコードを教えていただけると幸いです。 たとえば。作動のイメージですが。 Sub test1() range("A1")=range("A1") + 1 End Sub このtest1というマクロを、コマンドボタンを押しっぱなしにしている間、 繰り返して足し続けるような処理です。 コマンドボタンを1回クリックすれば、セルA1の数字は1増えますし、 押しっぱなしにしている間はカウントが増え続けます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >このtest1というマクロを、コマンドボタンを押しっぱなしにしている間、 >繰り返して足し続けるような処理です。 私は、押し続けて、作動するボタンは知りません。 Excelの場合は、私は、こんな風にします。 '------------------------------------------- Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long) Dim flg As Boolean Private Sub CommandButton1_Click() flg = Not flg CommandButton1.Caption = flg If flg Then Call Test1 End If End Sub Sub Test1() Do Range("A1").Value = Range("A1").Value + 1 Sleep 500 'スピードを調整 DoEvents Loop While flg End Sub
その他の回答 (2)
- Azzz___
- ベストアンサー率40% (9/22)
こんにちは。 AccessのAutoRepeatは知りませんが、Excelで無理やりやるなら コマンドボタンのmousedown、keydown(press)のイベントを 使えばできるかと思います。 はずしてたらすみません。
- cistronezk
- ベストアンサー率38% (120/309)
押しっぱなしの間、処理を続けるというのはないと思います。 通常は、開始ボタンと終了ボタンをつくって対応すると思います。 '処理続行フラグ。 Private GoFlag As Boolean '開始ボタン Private Sub CommandButton1_Click() 'フラグを処理続行に設定 GoFlag = True Do While GoFlag Call test1 'これがないと、コマンドボタン2が押せない 'DoEvents Loop End Sub '終了ボタン Private Sub CommandButton2_Click() 'フラグを処理終了に設定 GoFlag = False End Sub Sub test1() Range("A1") = Range("A1") + 1 End Sub という感じでしょうか。