我创建了一个用户将复制并粘贴日志的仪表板。仪表板将对仅使用公式的多张纸上的数据进行一些分析。
我想设置一个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的评估结果为真。
对此有任何帮助将是最受欢迎的。我将继续玩这个/如果我找到解决方案,我会跟进。谢谢!
答案 0 :(得分:0)
根据这些要求,您可能会遇到更多问题,但一个良好的开端是从您的工作表的更改事件开始。
在您的VBE中,转到包含您要跟踪的单元格的工作表,然后在代码顶部的框中选择"工作表",然后将框放到左侧并选择"变更"
这将在该工作表的VBA代码中创建一个名为Worksheet_Change()
的新子例程
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
这个名为Target
的参数默认加载Range
,change
导致此子例程触发。要检测它是哪个单元格,您可以使用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;是下一个障碍。首先是通过工作表更改触发此事。