我的目标是创建一个宏,在用户选择的单元格或行的正上方插入一个空行,并将所选行中的公式复制到新插入的行中。只复制公式,而不是常量。复制行中具有常量值的单元格在插入的行中保留为空白。
代码非常基本。这是:
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
答案 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