首页 文章

使用隐藏列从自动过滤范围复制并不具有内容

提问于
浏览
1

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

代码非常基本 . 这里是:

Sub InsertLine()

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

End Sub

除了一种情况外,这种情况很有效 .
如果范围包含激活的自动过滤器 and 隐藏列,则复制方法不会选择复制行上隐藏单元格的内容,因此不会将其传输到插入的行 . 如果范围仅自动过滤 or 只有隐藏列,则一切正常 .

这种行为有很好的记录here但没有提供解决方案 . 我还没有在网上找到任何其他内容 .

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

谢谢,

F

1 回答

  • 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
    

相关问题