【问题标题】:vba variable range of nonblank cells in column listobject列listobject中非空白单元格的vba变量范围
【发布时间】:2019-10-11 00:43:48
【问题描述】:

我有一个函数,它获取一个 Range 作为变量,并在该范围内的单元格的值上运行。 我需要将范围传递给构建如下的函数:

Dim hltTbl As ListObject
Set hltTbl = ThisWorkbook.Sheets("classy").ListObjects(1)
Dim i As Integer
Dim lastrow As Integer
Dim highlightsRange As Range


'range is in highlights from 1 to the first empty
For i = 1 To hltTbl.ListRows.Count
    If hltTbl.ListColumns("highlights").DataBodyRange.iTem(i).Value = "" Then
       lastrow = i - 1
       Exit For
    End If
Next

Set highlightsRange = hltTbl.ListColumns("highlights").DataBodyRange.iTem(1).resize(lastrow,0)

这不起作用。 我假装是构建包含在 listobject 列的所有非空白单元格中的范围。 (注意:单元格形成一个连续体,即非空白单元格之间没有空单元格)。 我做了什么找到了第一个非空单元格,这将是范围的最后一个单元格,我试图用 reshape(lastrow,0) 重塑列的第一个单元格的范围。 这不起作用。

问题: a) 我该怎么做 b)为什么这不起作用 c)(我尽量不使用过滤器,它们真的很痛苦)

非常感谢。

编辑1: .SpecialCells(... 似乎不包括非空白,而只包括空白 编辑2: 这似乎有效:

 DataBodyRange.SpecialCells(xlCellTypeConstants, xlTextValues)

但它的值是整数...

【问题讨论】:

    标签: excel vba range listobject nonblank


    【解决方案1】:

    您应该像这样调整大小:.resize(lastrow, 1) 而不是 .resize(lastrow, 0)。 原因是方法“resize”采用所需范围大小的行数和列数。 任何范围都至少有 1 行 1 列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-07
      • 2019-12-17
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多