• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelのVBAで、順次動作の実現)

ExcelのVBAで、順次動作の実現

このQ&Aのポイント
  • ExcelのVBAを使用して、順番にトグルボタンを押す方法を実現する方法を紹介します。
  • マクロを使用して、2秒ごとに順番にトグルボタンを押す方法を説明します。
  • ToggleButton1~3のトグルボタンを順番に押すためのVBAコードを提供します。

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

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

こんにちは。 以下は、標準モジュールを標準とするマクロですから、他に入れる場合は、コードを変えなくてはなりません。なお、Application.Wait では、コードは最後まで読んでいるのに、アプリケーションのマクロ側の動き自体にWaitが掛かってしまうから、そういう現象が起こります。こういうことは厳密には、スクリプト言語ではない証拠かもしれませんね。 '標準モジュール(シートモジュールの場合は、 ' Application.OnTime myTime, Me.Name & ".TogglesClick" 'と書き換えてください。 '----------------------------------- Sub TogglesClick() Dim myTime As Date Dim j As Integer Static i As Integer Const MYWAIT As Integer = 2 '2秒   If i >= 3 Then     i = 0     '自動でトグルをOffに戻す     For j = 1 To 3       With ActiveSheet.OLEObjects("ToggleButton" & j)         .Object.Value = False       End With     Next j     Exit Sub   End If   myTime = Now + TimeSerial(0, 0, MYWAIT)   i = i + 1   Application.ScreenUpdating = False   DoEvents   'この間にマクロが入る   '例:Cells(1, 1).Value = i      Application.ScreenUpdating = True   With ActiveSheet.OLEObjects("ToggleButton" & i)     .Object.Value = True   End With   Application.OnTime myTime, "TogglesClick"   '' Application.OnTime myTime, Me.Name & ".TogglesClick", 'シートモジュールの場合    End Sub

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

Sheet3にトグルボタンを3つ貼り付けた 下記では順位処理され、うまくいっているようだが。 Application.ScreenUpdating = TrueはFALSEになっていないでしょうね。 >Excelのシートに、トグルボタンを3つ配置します。 で、Worksheets("Sheet3").・・のような限定がなくてうまくいきましたか。 ーー Sub test() Worksheets("sheet3").Select Dim MyWait As String MyWait = 2 Worksheets("Sheet3").ToggleButton1.Value = False Worksheets("Sheet3").ToggleButton2.Value = False Worksheets("Sheet3").ToggleButton3.Value = False '-- MsgBox "AAA" Worksheets("Sheet3").ToggleButton1.Value = True DoEvents 'この間にもマクロを入れたい(0.1秒以内に処理できるものです) Application.Wait (Now + TimeValue("0:00:" & MyWait)) MsgBox "BBB" Worksheets("Sheet3").ToggleButton2.Value = True DoEvents Application.Wait (Now + TimeValue("0:00:" & MyWait)) MsgBox "CCC" Worksheets("Sheet3").ToggleButton3.Value = True DoEvents End Sub

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

これでどうですか。 Sub test() Dim MyWait As String MyWait = 2 Application.OnTime Now + TimeValue("0:00:" & MyWait), "toggle2" Application.OnTime Now + TimeValue("0:00:" & MyWait * 2), "toggle3" Application.ScreenUpdating = False ActiveSheet.ToggleButton1.Value = True DoEvents 'この間にもマクロを入れたい(0.1秒以内に処理できるものです) Application.ScreenUpdating = True End Sub Sub toggle2() ActiveSheet.ToggleButton2.Value = True DoEvents End Sub Sub toggle3() ActiveSheet.ToggleButton3.Value = True DoEvents End Sub

  • lark_0925
  • ベストアンサー率63% (37/58)
回答No.1

Sub test()   Dim tm As Date   Dim MyWait As String   MyWait = 2   ToggleButton1.Value = True   'この間にもマクロを入れたい(0.1秒以内に処理できるものです)   tm = Now() + TimeValue("00:00:" & MyWait)   Do Until Now() > tm    DoEvents    Loop   ToggleButton2.Value = True   tm = Now() + TimeValue("00:00:" & MyWait)   Do Until Now() > tm    DoEvents    Loop   ToggleButton3.Value = True End Sub これで試してみて下さい

関連するQ&A