0

我有一个范围变量“rng”。我需要将 rng 设置为:(1)工作表上的 usedrange 不包括第一列,以及(2)列号 6,例如

目前,我有:

Set rng = Intersect(.UsedRange, .Columns(6)).SpecialCells(xlCellTypeVisible)
' Because the range is filtered and i only need to select visible cells

但这会返回一列,其中也有标题行。我只需要列中的数字。

(1)任何快速的功能/方法/属性来做到这一点?(2) 我如何找到这个范围的大小?rng.rows.count 总是返回 ONE,即使 rng 中有多个单元格。我应该使用 rng.count 吗?有什么不同?

非常感谢你,

4

2 回答 2

2

我看到您已经接受了一个答案,但我看不出它如何满足您的要求,即它不包括标题行。这是我的解决方案。它还回答了您关于如何获取行数的问题 2:

Sub GetRangeAndCountRows()
Dim rng As Excel.Range
Dim rngArea As Excel.Range
Dim RowCount As Long

With ActiveSheet
    Set rng = Intersect(.UsedRange.Resize(.UsedRange.Rows.Count - 1, .UsedRange.Columns.Count).Offset(1, 0), .Columns(6)).SpecialCells(xlCellTypeVisible)
    Debug.Print rng.Address
    For Each rngArea In rng.Areas
        RowCount = RowCount + rngArea.Rows.Count
    Next rngArea
    Debug.Print RowCount
End With
End Sub
于 2012-06-28T19:38:39.877 回答
1

当然,蒂姆上面的评论效果很好。

这个答案是为了与上面的代码保持一致,也可能更容易阅读。

添加.UsedRange.Offset(,1)而不是.UsedRange以忽略 Interesect 公式中 UsedRange 中的第一列。:

Set rng = Intersect(.UsedRange.Offset(,1), .Columns(6)).SpecialCells(xlCellTypeVisible)
于 2012-06-28T18:25:47.597 回答