设置HPageBreak位置时出现错误1004

问题描述 投票:0回答:3

我手动移动了 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
vba excel excel-2010
3个回答
2
投票

我的答案与您发现的略有不同,并且不需要

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 中可能也是如此。


2
投票

我找到了解决方案。我试图思考手动设置分页符和通过 VBA 设置分页符在我的情况下有什么区别,由于我不完全理解的原因,我真的必须首先切换 view

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

这对我来说没有多大意义,因为 HPageBreaks 集合上的所有其他操作都不需要先更改视图,但如果 Excel 需要它,我会这样做:)。


0
投票

评论:答案对我不起作用,但就我而言,问题是我的分页符位于打印区域之外。 我就这样修好了

With Sheets("sheet2").PageSetup .PrintArea = "A1:BB1000" 结束于

对于所有专业人士来说可能微不足道。可能还有更优雅的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.