【问题标题】:Ignoring specific rows with VBA Excel使用 VBA Excel 忽略特定行
【发布时间】:2023-02-06 08:23:44
【问题描述】:

我在 Excel 中有一个这样的表格,其中的行数每天都会有所不同:

Column A Column B Column C
Cell 1 Cell 2 Show
Cell 3 Cell 4 Show
Cell 5 Cell 6 Ignore

我正在使用 vba 将范围转换为 html 表,然后通过电子邮件发送。 我有一个辅助列(C 列),我想在那里使用一个公式来过滤掉某些行。 但是,该过滤器并未排除隐藏的单元格显示在 html 表格中。

我目前使用这个

Dim LastRow As Long LastRow = rInput.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

找到我桌子的最后一行。这在您希望包含所有表格的项目中效果很好。 我试图将其更改为Find("Ignore",,这让我得到了Object variable or With block variable not set

我尝试在我的

ConvertRangeToHTMLTable(Sheet2.Range("$A:$J").Rows("5:" & LastRow), 5)

并使用过滤器隐藏“忽略”单元格。但这并没有阻止它们显示在通过电子邮件发送的 html 表格中。

【问题讨论】:

  • 您将需要修改您的 ConvertRangeToHTMLTable 例程并让它忽略隐藏的行,因为它们仍然是 Range 的一部分。

标签: excel vba


【解决方案1】:

您可能有某种遍历行的循环,对吗?它不会仅仅因为它们被过滤掉而自动跳过隐藏的行,你需要明确地告诉它跳过它们。你可以这样做:

For Each r In myRange.Rows
    If Not r.EntireRow.Hidden Then
        doSomething
    End If
Next r

【讨论】:

    【解决方案2】:

    最后调整表格(以及我关心的范围)从第 1 行而不是第 5 行开始,并使用

    strBody = dsaEmailHeader & ConvertRangeToHTMLTable(Sheet2.Range("$A:$H").Rows("1:" & LastRow).SpecialCells(xlCellTypeVisible))

    工作,以前没有。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多