设置HPageBreak位置时出现错误1004

时间:2016-01-10 16:42:24

标签: excel vba excel-vba excel-2010

我手动在Excel工作表中移动了分页符,并在此过程中记录了以下宏,因为我想自动化它:

Sub RecordedMacro()
'
' RecordedMacro Macro
'
    Set ActiveSheet.HPageBreaks(1).Location = Range("A71")

End Sub

运行此录制的宏失败并显示错误1004(“应用程序定义或对象定义的错误”),即使使用活动工作表,我也可以手动执行此操作而没有任何问题。

我做了一些互联网搜索,似乎大多数人最终都使用HPageBreaks.Add而不是更改分页符的位置,但我想知道为什么这个宏失败,如果有办法让它工作,我看到没有理由抛出错误。

编辑:以下行也因1004而失败:

Set ActiveSheet.HPageBreaks(1).Location = ActiveSheet.HPageBreaks(1).Location

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。我试着想一想手动设置分页符和通过VBA设置它之间的区别在于我的情况,并且由于我不完全理解的原因,我真的必须首先切换视图

Sheets(sheetName).Activate
ActiveWindow.View = xlPageBreakPreview
Sheets(sheetName).ResetAllPageBreaks
Set Sheets(sheetName).HPageBreaks(1).Location = ActiveSheet.Range("A71")
ActiveWindow.View = xlNormalView

这对我来说没什么意义,因为HPageBreaks集合上的所有其他操作都在不改变视图的情况下工作,但如果Excel需要它,我会这样做:)。

答案 1 :(得分:1)

我的回答与您发现的回答略有不同,并且不需要ResetAllPageBreaks。此外,这一个切换ScreenUpdating以避免来回闪烁:

Sub MoveThatHBreak()
Application.ScreenUpdating = False
ActiveWindow.View = xlPageBreakPreview
Set ActiveSheet.HPageBreaks(1).Location = Range("A11")
ActiveWindow.View = xlNormalView
Application.ScreenUpdating = True
End Sub

这是在Excel 2016中。我偶然发现了这个答案,因为我只能在分页预览中记录移动,因此可能在VBA中也是如此。

相关问题