为什么Excel给我错误“无法将对象移出工作表”

时间:2009-10-27 11:20:34

标签: excel vba excel-vba

我对Excel宏做了一个小改动,虽然它在我开发的工作表上有效,但它在类似的工作表上有错误。

更改只是添加了几列,按这些列对数据进行排序,然后再次删除它们。

两张纸之间的唯一区别是在错误的工作表中打开了自动筛选功能。

它失败并显示rng.Parent.Outline.ShowLevels RowLevels:=4

行标题中提到的错误

1 个答案:

答案 0 :(得分:2)

错误与将对象移动到不可见的屏幕部分有关。例如注释或图形对象。

在这种情况下,启用自动过滤意味着每列包含一个组合框,如ActiveSheets.Shapes中所示。关于添加或删除新列的内容显然会改变行为,但我不清楚为什么会这样做。

希望有一个更好的解决方案,但我已经设法提出这个解决方法,即使它不优雅也能正常工作。

  1. 转动AutoFilter
  2. 从表单中删除所有形状
  3. 处理
  4. 重新启用AutoFilter
  5. 在VBA中看起来像

    If ActiveSheet.AutoFilterMode = True Then
        ActiveSheet.AutoFilterMode = False
        Dim s As Shape
        For Each s In ActiveSheet.Shapes
            s.Delete
        Next
    End If
    

    在这里做一些有趣的事情......

    If autoFilter = True Then
        rng.autoFilter
    End If