运行公式和宏之后,我希望突出显示工作表中作为""
(If公式的结果)输出的单元格。
这是一个动态范围,我很难找到一种方法来更改带有空格的 Just 细胞的颜色。任何想法都将非常有帮助。
Dim cell As Variant
For Each cell In Sheets("[Sheet name here]").UsedRange.Columns("U").Cells
If InStr(cell.Value, "") = 0 Then
cell.Interior.ColorIndex = 15
End If
Next cell
End Sub
然后我基本上将其重复用于列“ D”,但是完成它花费了非常长的时间...
我认为我可以实施
=LEN(??)=0
功能,但不确定如何执行...
答案 0 :(得分:0)
它运行如此缓慢的原因是您要为范围内的每个单元格调用Excel Object。如果列U具有1,000个不为空的单元格,则这是对Excel对象模型的1,000次调用。
一次将整个范围读入内存,然后在内存中进行处理要快得多。这很容易做到。下面的代码读取单元格A1:A100,但主要区别在于它仅一次调用Excel对象(而不是100次)。
Dim MyData As Variant
MyData = Range("A1:A100").Value
对于您的代码,您将执行以下操作……
Dim MyData As Variant
Dim i As Long
MyData = ActiveSheet.UsedRange.Columns("U").Cells.Value
For i = 1 To UBound(MyData)
If (MyData(i, 1) = "") Then
'keep track of which cells need to be colored
End If
Next
如果有很多需要着色的单元格,则需要使用“非连续”范围选择,以便一次调用Excel对象模型即可执行此操作。有关更多信息,请参见本文Using VBA to select non-adjacent range
答案 1 :(得分:0)
谢谢。在这种情况下,我最终修改了公式,以实际生成空格“”而不是空字符串“”,正如@Scott Craner指出的那样。
在一个合法的空间内,我只是使用条件格式实现了相同的结果,如@tigeravatar建议的那样。
谢谢大家的帮助,我非常感谢!