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

时间:2014-05-30 12:15:36

标签: excel vba excel-vba

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

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上发帖,所以我事先道歉。谢谢。

3 个答案:

答案 0 :(得分:4)

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

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

另一种选择可能只是使用条件格式(另一种内置功能),但是对于更改范围可能很难控制。

答案 1 :(得分:0)

替换

myCell.BorderAround (xlContinuous)

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

答案 2 :(得分:0)

尝试一下:

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:

制作宏&#34;可点击&#34;:

  1. 将任何自选图形放在工作表上
  2. 格式化自选图形
  3. 右键单击自选图形并将宏指定给它。