• ベストアンサー

VBA処理を遅らせる

VBAでセルの色をあるセルを信号みたいに点滅させようと考えています。ゆっくりと点滅するように処理を遅らせるにはどうすればいいのでしょうか。よろしくお願いします。

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

  • ベストアンサー
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

標準モジュールの一番上に Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) を記述し、 マクロ記述の中に Sleep 400 を入れてみてください。数字の分だけ 時間を開けられます。 (数字は変えられます 400で0.4秒) ※当方エクセル2002

nihonjinn
質問者

お礼

これです!これを知りたかったんです。ありがとうございました。

その他の回答 (3)

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

随分簡単なんですが、例としてC1セルをクリックするとしばらくセル色がブリンク(点滅)するように見えます。 セルのSelectionChangeイベントです。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$C$1" Then For i = 1 To 20 '10回ブリンク If Cells(1, "C").Interior.ColorIndex = -4142 Then Cells(1, "C").Interior.ColorIndex = 9 Else Cells(1, "C").Interior.ColorIndex = -4142 End If stime = Timer + 0.5 Do Loop Until Timer >= stime Next i End If End Sub 0.5を小さくすると点滅がせわしくなります。 ただ、「待機ループ内で時刻が午前0時になるとTimer関数値はゼロに戻ってしまうため、無限ループになってしまう」。 http://www.tsware.jp/tips/tips_044.htmの下の方に回避した方法が紹介されてます。 ただ、いつブリンクを止めるのか、ブリンク中の入力の問題など、その関連で使えるのか自信なし。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

補足です。 SLEEP 400 の数字の部分はセルの値から設定することも 可能です。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

シート1のA1セルに数字を入れ、下のマクロを標準モジュールに コピペし1と2を実行してみてください。 A1セルの数字を変えてみたら回転数が変わります。 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) ------------------ Sub irorurretto1() Dim i As Long Dim myColorIndexArray() As Variant myColorIndexArray = Array(1, 3, 10, 20) For i = 0 To UBound(myColorIndexArray) With Range("D3").Offset(, i).Interior .ColorIndex = myColorIndexArray(i) .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Sleep 40 With Range("D3").Offset(, i).Interior .ColorIndex = xlNone .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Sleep 40 Next For i = 0 To UBound(myColorIndexArray) With Range("G4").Offset(i, 0).Interior .ColorIndex = myColorIndexArray(i) .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Sleep 40 With Range("G4").Offset(i, 0).Interior .ColorIndex = xlNone .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Sleep 40 Next For i = 0 To UBound(myColorIndexArray) With Range("F7").Offset(, -i).Interior .ColorIndex = myColorIndexArray(i) .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Sleep 40 With Range("F7").Offset(, -i).Interior .ColorIndex = xlNone .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Sleep 40 Next For i = 0 To UBound(myColorIndexArray) With Range("C6").Offset(-i, 0).Interior .ColorIndex = myColorIndexArray(i) .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Sleep 40 With Range("C6").Offset(-i, 0).Interior .ColorIndex = xlNone .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Sleep 40 Next End Sub ---------- ----------- Sub irorurretto2() Dim k As Integer Dim i As Long Dim myColorIndexArray() As Variant For k = 1 To Worksheets("Sheet1").Range("a1").Value myColorIndexArray = Array(1, 3, 10, 20) For i = 0 To UBound(myColorIndexArray) With Range("D3").Offset(, i).Interior .ColorIndex = myColorIndexArray(i) .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Sleep 40 With Range("D3").Offset(, i).Interior .ColorIndex = xlNone .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Sleep 40 Next For i = 0 To UBound(myColorIndexArray) With Range("G4").Offset(i, 0).Interior .ColorIndex = myColorIndexArray(i) .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Sleep 40 With Range("G4").Offset(i, 0).Interior .ColorIndex = xlNone .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Sleep 40 Next For i = 0 To UBound(myColorIndexArray) With Range("F7").Offset(, -i).Interior .ColorIndex = myColorIndexArray(i) .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Sleep 40 With Range("F7").Offset(, -i).Interior .ColorIndex = xlNone .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Sleep 40 Next For i = 0 To UBound(myColorIndexArray) With Range("C6").Offset(-i, 0).Interior .ColorIndex = myColorIndexArray(i) .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Sleep 40 With Range("C6").Offset(-i, 0).Interior .ColorIndex = xlNone .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With Sleep 40 Next Next k End Sub ---------

関連するQ&A