Excel上的VBA删除没有颜色和相邻单元格的单元格

时间:2017-04-06 23:38:35

标签: vba excel-vba excel-2010 excel-2007 excel

所以我试图找出一种方法来使用VBA执行以下技巧:

假设我们有一个巨大的Excel文件。

C500有一些文字。 M500有一个值,它可以有一个颜色填充,或者只是一个带有数字的默认白色单元格。 我想要实现的是当M500没有填充颜色时删除C500和M500。

我知道这是一个简单的任务,至少它看起来像那样,我知道它可以通过几行代码解决。我仍然无法通过搜索找到我需要的谷歌或堆栈溢出,可能是因为我的搜索能力差,或者因为我想做的事情非常具体。

任何帮助都将深表感谢,我真的很想看到任何类似的宏网站,我可以作为参考。对不起,如果这个问题已经回答了。

1 个答案:

答案 0 :(得分:1)

我正在重写这个答案,因为需求需要迭代为范围中的每个单元格定义的任何FormatCondition以及单元格的其他值。可以找到一种简洁的方法,例如here。基本上,它包括:

For X = 1 To Cell.FormatConditions.Count
    With Cell.FormatConditions(X)
      If .Type = xlCellValue Then
      ...
      If CellInterior Then
          DisplayedColor = IIf(ReturnColorIndex, Cell.Interior.ColorIndex, Cell.Interior.Color)
        Else
          DisplayedColor = IIf(ReturnColorIndex, Cell.Font.ColorIndex, Cell.Font.Color)

通过不同方式探索单元格来定义填充颜色。

所以你应该遍历范围

Dim rng As Range, cell As Range
Set rng = Range("M500:M550")
For Each cell In rng
   rem check the filling with the method in the link
   rem if it's the colorindex you want
   rem cell.Value = ''
   rem Also, get the row number and delete content of range ("C5XX")
Next cell