如何使用VBAmacros突出显示空白/空白单元格

我意识到我搞砸了第一个问题,所以我会最后一次尝试。 我的目标是从两个单独的工作表,包含文本或不包含单元格相同的4列。 工作表1将自动更新,所以我将每天运行此代码手动更新工作表2.我试图find一种方法来基本上找出哪些单元格使用macros缺less文本。 我尝试使用我在本网站上find的代码,该代码在包含文本的单元格上放置边界,并清空空单元格的边框。

Sub BorderForNonEmpty() Dim myRange As Range Set myRange = Sheet1.Range("C2:C252") ' Clear Existing Borders myRange.Borders.Linestyle = xlLineStyleNone ' Test Each Cell and Put a Border Around it if it has content For Each myCell in myRange If myCell.Text <> "" Then myCell.BorderAround (xlContinuous) End If Next End Sub 

这个代码的作品,但我想尝试突出显示与清除其边界的颜色相反的空单元格。 这也是我第一次在StackOverflow上发布,所以我事先道歉。 谢谢。

Excel不是循环遍历所有单元格,而是内置函数来select空白单元格。 这应该更快,更可靠。

 Sub BorderForNonEmpty() Dim myRange As Range Set myRange = Sheet1.Range("C2:C252") 'clear all color myRange.Interior.ColorIndex = xlNone 'color only blank cells myRange.SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = 6 End Sub 

另一个select是使用条件格式(另一个内置function),但是对于变化的范围可能很难控制。

更换

 myCell.BorderAround (xlContinuous) 

 myCell.Interior.Color = RGB(100, 100, 100) 

试试这个:

 Sub BorderForNonEmpty() Dim myRange As Range Set myRange = Sheet1.Range("C2:C252") For Each myCell In myRange If myCell.Text = "" Then myCell.Interior.ColorIndex = 6 End If Next End Sub 

编辑#1:

 Sub BorderForNonEmpty() Dim myRange As Range Set myRange = Sheet1.Range("C2:C252") For Each myCell In myRange If myCell.Text = "" Then myCell.Interior.ColorIndex = 6 Else myCell.Interior.ColorIndex = xlNone End If Next End Sub 

编辑#2:

为了使macros“可点击”:

  1. 将任何自选graphics放在工作表上
  2. 格式化自选graphics
  3. 用鼠标右键单击自选graphics并将macros分配给它。