プロが教えるわが家の防犯対策術!

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

A 回答 (4件)

標準モジュールの一番上に



Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

を記述し、

マクロ記述の中に

Sleep 400

を入れてみてください。数字の分だけ
時間を開けられます。
(数字は変えられます 400で0.4秒)

※当方エクセル2002
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/10/15 21:50

随分簡単なんですが、例として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の下の方に回避した方法が紹介されてます。
ただ、いつブリンクを止めるのか、ブリンク中の入力の問題など、その関連で使えるのか自信なし。
    • good
    • 0

補足です。



SLEEP 400

の数字の部分はセルの値から設定することも
可能です。
    • good
    • 0

シート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
---------
    • good
    • 0

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