Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA中的闪烁单元_Vba_Excel - Fatal编程技术网

VBA中的闪烁单元

VBA中的闪烁单元,vba,excel,Vba,Excel,我有一段代码,当一个单元格具有某个值时,它会将其内部更改为红色,并将其字体更改为白色。我想做的是使文本的颜色在白色和红色之间交替,只要单元格内部是红色的(一旦变成红色,它将保持红色)。 我希望用户有这样的印象,即该单元实际上正在闪烁 我写了这段代码: For r = 6 To 1000 With .Cells(r, 6) While .Interior.Color = RGB(237, 67, 55) .Font.Color = RGB(237,

我有一段代码,当一个单元格具有某个值时,它会将其内部更改为红色,并将其字体更改为白色。我想做的是使文本的颜色在白色和红色之间交替,只要单元格内部是红色的(一旦变成红色,它将保持红色)。 我希望用户有这样的印象,即该单元实际上正在闪烁

我写了这段代码:

For r = 6 To 1000
    With .Cells(r, 6)
        While .Interior.Color = RGB(237, 67, 55)
            .Font.Color = RGB(237, 67, 55)
             Application.Wait (Now + TimeValue("0:00:01"))
            .Font.Color = vbWhite
        Wend
    End With
Next r
excel只会生成第一个内部有红色“闪光”的单元格,然后崩溃。红细胞不是按连续顺序排列的。

与以下各项有关:

Sub Flash_Ahhh()

Dim strRange As String
Dim rCell As Range
Dim iFlasher As Integer

lngCounter = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row    'Find last row of data
lngCol = ActiveCell.Column                                          ' Find the active column

vArr = Split(Cells(1, lngCol).Address(True, False), "$")
Col_Letter = vArr(0)                                                'The Active Column Letter

strRange = Col_Letter & "6:" & Col_Letter & lngCounter              'The range of all cells in the active column



    For Each rCell In Range(strRange).Cells


            Select Case rCell.Interior.Color

                Case Is = vbRed

                    For iFlasher = 1 To 10

                        If rCell.Font.Color = vbRed Then
                            rCell.Font.Color = vbWhite
                            Else
                            rCell.Font.Color = vbRed
                        End If

                        Call WaitFor(0.1)


                    Next iFlasher
                    rCell.Font.Color = vbWhite

                Case Else

            End Select



    Next rCell

End Sub
使用以下方法造成时间延迟:

Sub WaitFor(NumOfSeconds As Single)
    Dim SngSec As Single
    SngSec = Timer + NumOfSeconds

    Do While Timer < SngSec
        DoEvents
   Loop
End Sub
Sub WaitFor(以秒为单位)
Dim SngSec作为单个
SngSec=计时器+纳秒
定时器
尝试一下:

Sub Flash_Ahhh()

Dim strRange As String
Dim rCell As Range
Dim iFlasher As Integer

lngCounter = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row    'Find last row of data
lngCol = ActiveCell.Column                                          ' Find the active column

vArr = Split(Cells(1, lngCol).Address(True, False), "$")
Col_Letter = vArr(0)                                                'The Active Column Letter

strRange = Col_Letter & "6:" & Col_Letter & lngCounter              'The range of all cells in the active column



    For Each rCell In Range(strRange).Cells


            Select Case rCell.Interior.Color

                Case Is = vbRed

                    For iFlasher = 1 To 10

                        If rCell.Font.Color = vbRed Then
                            rCell.Font.Color = vbWhite
                            Else
                            rCell.Font.Color = vbRed
                        End If

                        Call WaitFor(0.1)


                    Next iFlasher
                    rCell.Font.Color = vbWhite

                Case Else

            End Select



    Next rCell

End Sub
使用以下方法造成时间延迟:

Sub WaitFor(NumOfSeconds As Single)
    Dim SngSec As Single
    SngSec = Timer + NumOfSeconds

    Do While Timer < SngSec
        DoEvents
   Loop
End Sub
Sub WaitFor(以秒为单位)
Dim SngSec作为单个
SngSec=计时器+纳秒
定时器
See您可能需要对其进行一些调整以满足您的需要,因为我可以将其粘贴到新模块中。您可以使用条件格式,其中条件取决于单元格的值和隐藏的固定单元格的值(甚至可能是命名值)。只需每秒切换一次此固定单元格的值,并让条件格式发挥其神奇作用。请看,您可能可以稍微调整它以满足您的需要,因为我可以将其粘贴到新模块中。您可以使用条件格式,其中条件既取决于单元格的值,也取决于隐藏固定单元格的值(甚至可能是一个命名的值)。只需每秒切换一次这个固定单元格的值,让条件格式发挥其神奇作用。为什么不
调用WaitFor(1)
进行一秒钟的闪烁呢???@Gary的学生这是循环和延迟之间的折衷。你可以摆弄数字来改变“闪烁”和闪光的长度。你可能还想做一个
rCell。如果你从6:1000开始,选择
跳下该列好的…………我投了更高的票,因为我认为
WaitFor()
很酷。为什么不
调用WaitFor(1)
对于一秒钟的闪光???@Gary的学生,这是循环和延迟之间的折衷。你可以摆弄数字来改变闪光的“闪光”和长度。你可能还想做一个
rCell。如果你从6:1000开始,选择
跳下栏好的……….我投了赞成票,因为我认为
等待()
非常酷。