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开始,选择
跳下栏好的……….我投了赞成票,因为我认为等待()
非常酷。