• ベストアンサー

[ExcelVBA] コマンドボタンを押しっぱなしにしている間、マクロを繰り返す方法

AccessVBAでは、コマンドボタンで「AutoRepeat」プロパティを使えば、 コマンドボタンを押しっぱなしにしている間、繰り返して処理を続けます。 しかし、 Excelの場合、コマンドボタンにAutoRepeatのような「繰り返しプロパティ」がありません。 このような場合、どのように同様な処理を行うのでしょうか? 簡単な作動例のコードを教えていただけると幸いです。 たとえば。作動のイメージですが。 Sub test1() range("A1")=range("A1") + 1 End Sub このtest1というマクロを、コマンドボタンを押しっぱなしにしている間、 繰り返して足し続けるような処理です。 コマンドボタンを1回クリックすれば、セルA1の数字は1増えますし、 押しっぱなしにしている間はカウントが増え続けます。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 >この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)
回答No.3

こんにちは。 AccessのAutoRepeatは知りませんが、Excelで無理やりやるなら コマンドボタンのmousedown、keydown(press)のイベントを 使えばできるかと思います。 はずしてたらすみません。

回答No.2

押しっぱなしの間、処理を続けるというのはないと思います。 通常は、開始ボタンと終了ボタンをつくって対応すると思います。 '処理続行フラグ。 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 という感じでしょうか。

関連するQ&A