我对Excel宏做了一个小改动,虽然它在我开发的工作表上有效,但它在类似的工作表上有错误。
更改只是添加了几列,按这些列对数据进行排序,然后再次删除它们。
两张纸之间的唯一区别是在错误的工作表中打开了自动筛选功能。
它失败并显示rng.Parent.Outline.ShowLevels RowLevels:=4
答案 0 :(得分:2)
错误与将对象移动到不可见的屏幕部分有关。例如注释或图形对象。
在这种情况下,启用自动过滤意味着每列包含一个组合框,如ActiveSheets.Shapes
中所示。关于添加或删除新列的内容显然会改变行为,但我不清楚为什么会这样做。
希望有一个更好的解决方案,但我已经设法提出这个解决方法,即使它不优雅也能正常工作。
在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