vba 列列表对象中非空白单元格的可变范围
vba variable range of nonblank cells in column listobject
我有一个函数,它获取一个范围作为变量,并 运行 范围内单元格的值。
我需要将范围传递给如下构建的 taht 函数:
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)
这不起作用。
我假装是构建包含列表对象列的所有非空白单元格的范围。
(注意:单元格形成一个连续体,即非空白单元格之间没有空单元格)。
我所做的是找到第一个非空单元格,这将是范围的最后一个单元格,我试图用 reshape(lastrow,0) 重塑列的第一个单元格的范围。
这不起作用。
问题:
a) 我该怎么做
b)为什么这不起作用
c)(我尽量不使用过滤器,它们真的很痛苦)
非常感谢。
编辑1:
.SpecialCells(... 似乎不包括非空白,而只包括空白
编辑2:
这似乎有效:
DataBodyRange.SpecialCells(xlCellTypeConstants, xlTextValues)
但它的值是整数...
您应该像这样调整大小:.resize(lastrow, 1)
而不是 .resize(lastrow, 0)
。
原因是方法“resize
”采用所需范围大小的行数和列数。
任何范围至少有 1 行和 1 列。
我有一个函数,它获取一个范围作为变量,并 运行 范围内单元格的值。 我需要将范围传递给如下构建的 taht 函数:
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)
这不起作用。 我假装是构建包含列表对象列的所有非空白单元格的范围。 (注意:单元格形成一个连续体,即非空白单元格之间没有空单元格)。 我所做的是找到第一个非空单元格,这将是范围的最后一个单元格,我试图用 reshape(lastrow,0) 重塑列的第一个单元格的范围。 这不起作用。
问题: a) 我该怎么做 b)为什么这不起作用 c)(我尽量不使用过滤器,它们真的很痛苦)
非常感谢。
编辑1: .SpecialCells(... 似乎不包括非空白,而只包括空白 编辑2: 这似乎有效:
DataBodyRange.SpecialCells(xlCellTypeConstants, xlTextValues)
但它的值是整数...
您应该像这样调整大小:.resize(lastrow, 1)
而不是 .resize(lastrow, 0)
。
原因是方法“resize
”采用所需范围大小的行数和列数。
任何范围至少有 1 行和 1 列。