【问题标题】:Copy from autofiltered range with hidden columns doesn't include hidden cells' content从带有隐藏列的自动过滤范围复制不包括隐藏单元格的内容
【发布时间】:2022-02-10 03:00:56
【问题描述】:

我的目标是创建一个宏,在用户选择的单元格或行上方插入一个空白行,并将所选行中的公式复制到新插入的行中。只复制公式,不复制常量。复制行中具有常数值的单元格在插入行中留空。

代码非常基础。这里是:

Sub InsertLine()

Selection.EntireRow.Insert
Selection.Offset(1, 0).EntireRow.copy Selection.EntireRow
Selection.EntireRow.SpecialCells(xlCellTypeConstants).ClearContents

End Sub

这在除一种情况外都适用。
如果范围包含激活的自动过滤器隐藏列,则复制行上隐藏单元格的内容不会被复制方法选中,因此不会传输到插入的行。 如果范围只是自动过滤只有隐藏的列,那么一切正常。

这种行为有据可查here,但没有提供解决方案。 我没有在网上找到其他任何东西。

在直接从电子表格手动执行剪切和粘贴 (ctrl-C/ctrl-V) 操作时,此行为是相同的。
所以我会说这不是VBA问题。但解决方案可能在于 VBA。
任何人都可以提供任何解决方案或解决方法吗?

【问题讨论】:

  • 此类问题的解决方案是使用循环,它将转到For each cell in ~range-to-copy~。在这种情况下,无论是否有任何隐藏或过滤的单元格。

标签: vba excel


【解决方案1】:
Sub InsertLine()

    Dim src As Range, srcUsed As Range, c As Range

    Set src = Selection.Cells(1).EntireRow
    src.Insert

    Set srcUsed = Application.Intersect(src, src.Parent.UsedRange)
    For Each c In srcUsed.Cells
        c.Copy c.Offset(-1, 0)
        If Not c.HasFormula Then c.Offset(-1, 0).ClearContents
    Next c

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 2018-10-02
    • 1970-01-01
    相关资源
    最近更新 更多