获取单元格填充颜色并根据该颜色删除单元格值

时间:2017-01-20 21:29:56

标签: excel vb.net

我是excel(2013)VB编码的新手,我需要编写一些代码来执行以下操作:

我有一个包含多个标签的2013年工作簿。我需要从这些选项卡的某些选项中删除值(可以是硬编码数字,分类数据[例如,"是/否"]或公式)(让我们说标签X和Y) 基于细胞填充颜色

1)首先,我如何获得颜色索引,或者更具体地说是颜色索引属性(我可能没有在这里使用完全正确的术语)?我假设我需要从函数中获取这个确切的数字,然后将这个数字插入某个子中以删除条件值。

2)然后,我如何使用该值来编写一个子(?),它将删除标签X和Y的特定单元格颜色中的所有值?

非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

单元格的颜色属性保存在单元格的interior对象中。要从Tab' X'中的单元格B3获取颜色。你可以这样做:

 Dim cellColor as Long
 cellColor = Sheets("X").Range("B3").Interior.Color

现在,单元格的颜色保存在变量cellColor中。

这种颜色属性虽然有点古怪。它是RGB的数字表示形式,采用以下形式:(R*256^2 + G*256 + B)有点像位掩码,但在字节级别。 Check out the function in the second answer here如果您需要,可以获得这些值。

你最好的选择是画一个单元格,然后运行一个宏来告诉你颜色代码是什么。

假装您要删除工作表X范围A1:Z5000中红色(65535)的所有内容,您可以执行以下操作:

 Dim checkCell as Range 'cells are range objects


 For each checkCell in Sheet("X").Range("A1:Z5000").Cells 'loop through all the cells assigning the cell in each iteration to variable checkCell
      If checkCell.Interior.Color = 65535 Then 'is it red?
          checkCell.ClearContents 'null out the value
      End If
 Next checkCell