使用下面的格式化单元格查找数据的最后一行

时间:2015-09-18 15:02:44

标签: excel-vba vba excel

当某个列中缺少数据时,我需要识别(通过突出显示)。换句话说,我有一列数据指定一个国家。在此列上方有空白,此列下方有空白。数据的最顶行保持不变(数据始终从第4行开始),但底部是可变的。此外,由于这些数据的输出方式,表格底部似乎有3行左右空白但格式化的单元格,这些单元格可以识别为“已使用”。这是我到目前为止的代码:

With ThisWorkbook.ActiveSheet

LastRowCountry = .Range("H" & .Rows.Count).End(xlUp).Row

End With

特定于我的目标的代码片段是:

'Search for blank Geo tags

With ThisWorkbook.ActiveSheet

If IsEmpty(Cells(LastRowCountry, "H")) = True Then

     'Highlight Columns

        With Range(Cells(4, "H"), Cells(LastRow, "H")).Interior

          .PatternColorIndex = xlAutomatic

          .ThemeColor = xlThemeColorAccent2

          .TintAndShade = 0.799981688894314

          .PatternTintAndShade = 0

        End With

       End If

         End With

在此表单中,它无法识别列中的任何空白,也从不突出显示。在此之前,我在代码前面加上:

With ActiveSheet.Cells.SpecialCells(xlLastCell)

LastRow = .Row

LastCol = .Column

End With

总是突出显示该列(我假设是因为它检测到空白但格式化的单元格悬挂在表格的底部。感谢任何接受此操作的人。

史蒂夫

1 个答案:

答案 0 :(得分:1)

我在这里试过这个并且有效

Sub CheckForEmptyCells(Byref sh as Worksheet, ByRef col as string)
  Dim lastR&
  lastR = sh.Range(col & Rows.Count).End(xlUp).Row
  Dim r As Range: Set r = Range(col & "5:" & col & lastR)
  If Not r.Find("") Is Nothing Then
     With r.Interior
          .PatternColorIndex = xlAutomatic
          .ThemeColor = xlThemeColorAccent2
          .TintAndShade = 0.799981688894314
          .PatternTintAndShade = 0
        End With
  End If
End Sub

注意:此例程仅检查给定列在其自己的第一个和最后一个单元格之间是否有空单元格。如果目标是检查整个列(列的最后一个单元格本身可能为空),那么您应该使用:lastR = sh.UsedRange.Rows.Count