【问题标题】:Selecting a Range in filtered data - Excel VBA在过滤数据中选择一个范围 - Excel VBA
【发布时间】:2017-07-22 02:06:21
【问题描述】:

我有一个宏,它可以成功地自动筛选范围和筛选条件。我正在寻找复制可见的这个结果范围,并将其粘贴到其他地方,但是在选择这个过滤范围时遇到了麻烦。我的数据的第 1 行是标题。

这里是代码 sn-p,应用于过滤后的数据:

Set mainsheet = Workbooks("MyFile.xlsm").Sheets("Main")
Range("A1").Select

With mainsheet
.Range(.Cells(Selection.Row + 1, 1), .Cells(Selection.Row + 1, 47)).Select
End With

我认为这会将光标向下移动到下一个可见单元格,但实际上它会向下移动到单元格 A2(已被过滤掉)。

我需要选择不包括我的标题的第一行数据,所以我可以 xlDown 并复制,但我不知道如何向下递增。有什么建议吗?

【问题讨论】:

  • 我刚刚意识到使用 SpecialCells(xlCellTypeVisibile).Select 可以缓解这个问题,因为过滤后的单元格显然不可见。但我仍然对这个问题的答案以及使用自动过滤数据时选择范围的“正确”方法感兴趣。
  • 如你所说,复制可见单元格即可。作为从整个列表覆盖单元格 A2:W235 的过滤列表复制的基本示例,我将使用类似于:Sheet1.Range("A2:W235").SpecialCells(xlCellTypeVisible).Copy Destination:=Sheet3.Range("A1")

标签: vba excel


【解决方案1】:

使用这个符号

With mainsheet.UsedRange
    .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Copy
End With

.Offset(1) 将整个选择向下移动一行(不包括标题)

.Resize(.Rows.Count - 1) 删除偏移选择的最后(额外)行

【讨论】:

    【解决方案2】:

    我刚刚意识到使用 SpecialCells(xlCellTypeVisibile).Select 可以缓解这个问题,因为过滤后的单元格显然不可见

    【讨论】:

    • 这不是答案。请考虑将此信息添加到您的问题中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 2018-11-11
    • 2014-03-04
    • 1970-01-01
    相关资源
    最近更新 更多