设置HPageBreak位置时出现错误1004

我手动移动了Excel工作表中的分页符,并在该过程中logging了以下macros,因为我想将其自动化:

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

运行这个logging的macros失败,错误1004(“应用程序定义的错误或对象定义的错误”),即使有一个活动工作表,我可以手动没有任何问题。

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

编辑:下面的行与1004也失败:

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

我的答案与你发现的稍有不同,并不需要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中。我偶然发现了这个答案,因为我只能在Page Break Preview中logging这个动作,所以在VBA中可能也是如此。

我find了解决scheme。 我试图想一下,手动设置分页符和通过VBA设置它们之间的差别是在我的情况下,由于我不完全理解的原因,我真的必须首先切换视图

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

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