【问题标题】:Excel VBA how to select all cells in a dynamic range were the colour index is not 0Excel VBA如何在颜色索引不为0的情况下选择动态范围内的所有单元格
【发布时间】:2014-10-14 09:51:25
【问题描述】:

我在工作表中嵌入了一个 SAP 报告,它通过使用在另一个工作表中定义的变量的宏进行刷新。一切正常,但我无法选择报告生成的数据。

报告的标题始终位于此范围("A17:K17") 内,但结果行会有所不同,使我想要捕获的总范围从("A17:K18")(A17:K1000") 不等。

我认为我已经尝试过的解决方案不起作用,因为结果数据几乎没有一致性,它是文本和数字的混合,在行和列中到处都是空单元格。包括偶尔的完全空行。这意味着我之前尝试过的方法达到了它认为已经到达填充行末尾的点 - 但它没有。

整个报告中唯一保持不变的因素是,我要捕获的范围内的单元格都默认填充了一种颜色,范围之外的任何内容都是未填充的。

对我来说,最简单的解决方案是使用 VBA 选择下面的所有单元格,包括 ("A17:K17") 上的标题,其中颜色索引不为 0(空白?),无论它们的内容如何,​​因为我不介意捕获空细胞。除了我不知道该怎么做。

此时我只想选择这个范围,我还没有决定是将其复制到新工作簿还是电子邮件中,但我可以做到。我只是在选择它时遇到了死胡同。

【问题讨论】:

  • 试过ActiveSheet.UsedRange.AddressIf [A1].Interior.ColorIndex <> xlColorIndexNone Then -> 也是彩色的。
  • 在 VBA Sub 中检查 ColorIndex 的问题在哪里?

标签: vba excel


【解决方案1】:

非常不确定究竟你需要什么,但这里有一个解决方案。值得注意的是,ColorIndex 和 Color 属性在没有填充的情况下不一定为零,所以如果你只是将 blankCell 更改为一个你定义为空白的填充单元格,你会很高兴去.

Sub test()
Set blankCell = Range("A1")    ' change this to a cell that you define to be blank
blankIndex = blankCell.Interior.Color
Set cellsDesired = Range("A17:K17")
For Each cell In Range("A17:K1000")
    If cell.Interior.Color <> blankIndex Then
        Set cellsDesired = Application.Union(cellsDesired, Range(cell.Address))
    End If
Next cell
cellsDesired.Select
End Sub

【讨论】:

  • 非常感谢,效果非常好!
猜你喜欢
  • 2012-08-17
  • 1970-01-01
  • 2017-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
相关资源
最近更新 更多