Excel VBA脚本检测单元格中的值,导致工作表闪烁,直到单击

时间:2016-04-27 18:11:22

标签: excel-vba vba excel

我创建了一个用户将复制并粘贴日志的仪表板。仪表板将对仅使用公式的多张纸上的数据进行一些分析。

我想设置一个VBA脚本,当一个公式在B25中变为TRUE时,该表将空白,第四个从绿色变为红色,直到用户点击工作表标签并结束循环。我对VBA很新,并从宏中删除一些代码来尝试。这就是我所拥有的:

Sub Test()

If Range("B25").Value = "TRUE" Then

Do Until Sheets("Dilutions").Activate

With ActiveWorkbook.Sheets("Dilutions").Tab
    .ThemeColor = xlThemeColorAccent3
    .TintAndShade = -0.249977111117893
End With

Application.Wait (Now + #12:00:01 AM#)

With ActiveWorkbook.Sheets("Dilutions").Tab
    .ThemeColor = xlThemeColorAccent2
    .TintAndShade = -0.249977111117893
End With

Application.Wait (Now + #12:00:01 AM#)
Loop
End If
End Sub

当运行在B25中找到TRUE的脚本时,工作表选项卡不会更改颜色。我的代码没有收到任何错误消息,所以我在哪里开始排除故障。我确保在测试宏时没有选择“Dilutions”表,而且B25的评估结果为真。

对此有任何帮助将是最受欢迎的。我将继续玩这个/如果我找到解决方案,我会跟进。谢谢!

1 个答案:

答案 0 :(得分:0)

根据这些要求,您可能会遇到更多问题,但一个良好的开端是从您的工作表的更改事件开始。

在您的VBE中,转到包含您要跟踪的单元格的工作表,然后在代码顶部的框中选择"工作表",然后将框放到左侧并选择"变更"

这将在该工作表的VBA代码中创建一个名为Worksheet_Change()的新子例程

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

这个名为Target的参数默认加载Rangechange导致此子例程触发。要检测它是哪个单元格,您可以使用INTERSECT

Private Sub Worksheet_Change(ByVal Target As Range)
     If Not Intersect(Target, Range("B25")) Is Nothing Then
          If Target.Value = "True" Then Call Test
     End if
End Sub

所以我们在这里检测到哪个单元格发生了变化,然后我们调用了测试子程序,如果它是B25并且值是True

Test()子例程中,您可以取出引用B25的行,因为我们正在Worksheet_Change()事件子例程中进行检测。

一旦你得到平方,Application.OnTime方法将允许你设置一个调用宏的时间表(比如说当前时间为1秒)然后该宏将切换颜色,但是&# 39;是下一个障碍。首先是通过工作表更改触发此事。