使用隐藏列从自动过滤范围复制不包括隐藏单元格的内容

时间:2014-01-15 20:49:12

标签: excel vba excel-vba

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

代码非常基本。这是:

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 任何人都可以提供任何解决方案或解决方法吗?

谢谢,

˚F

1 个答案:

答案 0 :(得分:2)

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