【发布时间】: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~。在这种情况下,无论是否有任何隐藏或过滤的单元格。