VBA高亮显示包含空格的单元格

时间:2019-07-22 17:16:37

标签: excel vba

运行公式和宏之后,我希望突出显示工作表中作为""(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功能,但不确定如何执行...

2 个答案:

答案 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建议的那样。

谢谢大家的帮助,我非常感谢!