excel 在指定的列中查找空单元格,并将空单元格涂为“红色”

h22fl7wq  于 2023-05-08  发布在  其他
关注(0)|答案(2)|浏览(233)

我正在尝试确定空列单元格并将这些空单元格着色为“红色”。然而,我是新的VBA,不太知道如何做到这一点的过程。谁能解释一下或者帮帮我?先谢谢你。
由于隐私,我只是在这里附上了样本结果。但这就是我要找的函数。
样品:
检查Column1和Column3中的空单元格(直到该列的最后一个单元格),然后用“红色”突出显示这些空单元格。

只有有限的列单元格可以确定为空并以红色突出显示。

q8l4jmvw

q8l4jmvw1#

Sheet1上创建一个表,将表命名为tblTest,然后尝试以下操作:

Sub Find_Empty_Cells()

    Dim tbl As ListObject
    Dim i As Long
    
    'Declare table name
    Set tbl = ThisWorkbook.Worksheets("Sheet1").ListObjects("tblTest")
  
    With tbl
        'Loop Through Every Row except header in Table
        For i = 1 To tbl.Range.Rows.Count - 1
            'Check column 1
            If .DataBodyRange(i, 1).Value = "" Then
                .DataBodyRange(i, 1).Interior.ColorIndex = 3
            End If
            'Check column 3
            If .DataBodyRange(i, 3).Value = "" Then
                .DataBodyRange(i, 3).Interior.ColorIndex = 3
            End If
        Next i
    End With

End Sub
qmelpv7a

qmelpv7a2#

不需要遍历所有单元格。
您可以使用SpecialCells(xlCellTypeBlanks)来标识区域中的所有空单元格,并且可以使用Columns(1)Columns(3)来定位给定区域的第1列和第3列。将这两个范围结合起来将给予第1列和第3列中所有为空的单元格。把这些涂成红色

Sub Colour_Empty_Cells_Red()
    Dim empty_cells As Range
    On Error Resume Next
        With Range("A1").CurrentRegion
            Set empty_cells = Union(.Columns(1), .Columns(3)).SpecialCells(xlCellTypeBlanks)
        End With
    On Error GoTo 0
    If Not (empty_cells Is Nothing) Then empty_cells.Interior.Color = vbRed
End Sub

要在工作簿中的每个工作表上运行代码,请创建一个For Each..循环,循环遍历每个工作表,然后使用以下命令将更改的工作表引用包含在Range(“A1”)用途:

Sub Colour_Empty_Cells_Red()
    Dim empty_cells As Range, ws As Worksheet
    On Error Resume Next
    For Each ws In ActiveWorkbook.Worksheets
        With ws.Range("A1").CurrentRegion
            Set empty_cells = Union(.Columns(1), .Columns(3)).SpecialCells(xlCellTypeBlanks)
        End With
        If Not (empty_cells Is Nothing) Then empty_cells.Interior.Color = vbRed
    Next
    On Error GoTo 0
End Sub

相关问题