设置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需要它,我会这样做:)。