「お昼の放送」の思い出

AccessVBAでは、コマンドボタンで「AutoRepeat」プロパティを使えば、
コマンドボタンを押しっぱなしにしている間、繰り返して処理を続けます。

しかし、
Excelの場合、コマンドボタンにAutoRepeatのような「繰り返しプロパティ」がありません。

このような場合、どのように同様な処理を行うのでしょうか?
簡単な作動例のコードを教えていただけると幸いです。


たとえば。作動のイメージですが。
Sub test1()
range("A1")=range("A1") + 1
End Sub

このtest1というマクロを、コマンドボタンを押しっぱなしにしている間、
繰り返して足し続けるような処理です。

コマンドボタンを1回クリックすれば、セルA1の数字は1増えますし、
押しっぱなしにしている間はカウントが増え続けます。

A 回答 (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
    • good
    • 2

こんにちは。



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

はずしてたらすみません。
    • good
    • 0

押しっぱなしの間、処理を続けるというのはないと思います。


通常は、開始ボタンと終了ボタンをつくって対応すると思います。

'処理続行フラグ。
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

という感じでしょうか。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A