gpt4 book ai didi

从 Auto_Open 调用宏时,excel vba HPageBreak.Count 不起作用

转载 作者:行者123 更新时间:2023-12-02 00:40:26 24 4
gpt4 key购买 nike

我正在做一个项目,其中我读取 CSV 文件,在临时工作表中格式化数据( OutputSheet ),将格式化数据复制粘贴到要打印的工作表上( PrintSheet ),插入后将 PrintSheet 保存为 PDF手动分页符,以便数据 block 不会跨页拆分。
我在 Excel VBA 宏函数中执行此操作。这是代码的相关部分:

PrevPageNum = PrintSheet.HPageBreaks.Count

OutputSheet.Rows("6:" & (CurrHistoryRows + 14)).Copy

PrintSheet.Cells(PrtPstStRow, 1).PasteSpecial Paste:=xlPasteFormats
PrintSheet.Cells(PrtPstStRow, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Application.CutCopyMode = False

PageNum = PrintSheet.HPageBreaks.Count

If PrevPageNum < PageNum Then
PrintSheet.Rows(PrtPstStRow).PageBreak = xlPageBreakManual
End If

当我直接从代码中或从快速访问工具栏中的分配按钮调用宏时,手动分页符已正确分配。但是当我从 Auto_Open 调用这个宏时,这些宏根本没有分配(其他一切都保持不变!)。调试代码后,我注意到 PrevPageNumPageNumAuto_Open 调用宏时始终为零.在其他两种情况下,值会发生变化。

还要提一下 PrintSheet宽度缩放到 1 Page在页面布局中。

请有任何想法!
谢谢你。
Update:我在 PrintSheet.HPageBreaks.Count 之前添加了这些语句并且分页符从 Auto_Open 开始工作也是。
OutputSheet.Activate
PrintSheet.Activate

FINAL Update:
当我在“慢速”计算机(处理器 - 带有 3GB DDR2 RAM 的 i3)上运行它时,我又遇到了同样的分页符被跳过的问题。环顾四周后,我终于找到了一个成功率 100% 的解决方案(或解决方法)。
您需要垂直滚动到最后使用的行,以便 HPageBreaks CollectionCount 刷新.最终代码如下:
PrintSheet.Activate
CurrentRowNum = ActiveWindow.ScrollRow
ActiveWindow.ScrollRow = 5000 'or the last used row
PageNum = PrintSheet.HPageBreaks.Count
ActiveWindow.ScrollRow = CurrentRowNum

最佳答案

当您使用 Auto_Open 时,没有任何值(value),因为您不是来自另一个页面,或者在分配这些变量时甚至没有页面。

您可以内置一个 if 语句来处理两者都为零的情况。基本上,处理您使用 Auto_Open 的情况。因为在任何其他情况下,那里都会有一个值(value)。

关于从 Auto_Open 调用宏时,excel vba HPageBreak.Count 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26570391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com