Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:告诉打印设置哪一行=第一页的末尾?_Excel_Vba - Fatal编程技术网

Excel VBA:告诉打印设置哪一行=第一页的末尾?

Excel VBA:告诉打印设置哪一行=第一页的末尾?,excel,vba,Excel,Vba,我的电子表格中有两个表(一个在另一个表的顶部,由几行分隔),称它们为T1和T2。T1在包含多少行方面是动态的,T2是静态的。我可以很容易地找出T1的哪一行结束,然后加上1左右——调用这个变量T1EndRow 我想对它进行编码,以便它知道从第1行到第1行的所有内容都将出现在打印预览的第一页上。T2将转到第二页 如何执行此操作?使用工作表对象的HPageBreaks和VPageBreaks成员设置水平和垂直分页符的位置 例如,如果T1EndRow是要显示在第1页的最后一行中的命名范围,请执行以下操作

我的电子表格中有两个表(一个在另一个表的顶部,由几行分隔),称它们为T1和T2。T1在包含多少行方面是动态的,T2是静态的。我可以很容易地找出T1的哪一行结束,然后加上1左右——调用这个变量T1EndRow

我想对它进行编码,以便它知道从第1行到第1行的所有内容都将出现在打印预览的第一页上。T2将转到第二页


如何执行此操作?

使用
工作表
对象的
HPageBreaks
VPageBreaks
成员设置水平和垂直分页符的位置

例如,如果T1EndRow是要显示在第1页的最后一行中的命名范围,请执行以下操作:

Set ActiveSheet.HPageBreaks(1).Location = ActiveSheet.Range("T1EndRow")
如果T1EndRow是一个
长的
,请尝试:

Set ActiveSheet.HPageBreaks(1).Location = ActiveSheet.Cells(T1EndRow, 1)
奇怪的是,Excel在这一行抛出错误(这是调整分页符的唯一方法),除非您处于xlPageBreakPreview模式:

ActiveWindow.View = xlPageBreakPreview
Set Sheet1.HPageBreaks(1).Location = Sheet1.Cells(58, 1)
ActiveWindow.View = xlNormalView

我还注意到,如果您设置的
.Location
在工作表的
UsedRange
之外,它会抛出一个不同的错误,因此,您可能希望确保已满足该要求。

使用
工作表
对象的
HPageBreaks
VPageBreaks
成员来设置水平和垂直分页符的位置

例如,如果T1EndRow是要显示在第1页的最后一行中的命名范围,请执行以下操作:

Set ActiveSheet.HPageBreaks(1).Location = ActiveSheet.Range("T1EndRow")
如果T1EndRow是一个
长的
,请尝试:

Set ActiveSheet.HPageBreaks(1).Location = ActiveSheet.Cells(T1EndRow, 1)
奇怪的是,Excel在这一行抛出错误(这是调整分页符的唯一方法),除非您处于xlPageBreakPreview模式:

ActiveWindow.View = xlPageBreakPreview
Set Sheet1.HPageBreaks(1).Location = Sheet1.Cells(58, 1)
ActiveWindow.View = xlNormalView

我还注意到,如果您设置的
.Location
在工作表的
UsedRange
之外,它会抛出一个不同的错误,因此您可能希望确保已满足该要求。

Hm出于某种原因,这对我来说是抛出错误,但可能是因为我通过引用对象引用我的工作簿/工作表。例如,现在我正在尝试设置xlWBk.Sheets(1).HPageBreaks(1).Location=xlWBk.Sheets(1).Cells(T1EndRow,1)。。。还有什么我需要参考的吗?ActiveSheet是一项要求吗?我没有在问题中说明这一点,所以我会接受答案——谢谢@我的蝙蝠侠啊,这是我没有考虑过的。显然你需要在xlPageBreakPreview模式下才能工作,残忍的。。。更新答案。我找到了一种插入分隔符的方法,方法是执行xlWBk.Sheets(1).HPageBreaks.Add Before:=xlWBk.Sheets(1).Range(“A”&T1EndRow+1),但由于某种原因,上一页的表头会泄漏到第二页。@IAmBatman是的,我在避免
HPageBreaks.Add()
因为通常情况下,如果你的分页符为50,下一个分页符为100,并且你想将第一个分页符移动到65,那么你将得到3页,从1-50页、51-65页和66-100页:/n现在可能是这样的情况吗?在这种情况下,报告总是从头开始生成,并且只有两页长(因此只有一个分页符)T1缩放到第一页,T2中的所有其他内容都在第二页。有没有办法强制页眉不在第二页重复?嗯,出于某种原因,这会给我带来错误,但可能是因为我通过引用对象引用工作簿/工作表。例如,现在我正在尝试设置xlWBk.Sheets(1).HPageBreaks(1).Location=xlWBk.Sheets(1).Cells(T1EndRow,1)。。。还有什么我需要参考的吗?ActiveSheet是一项要求吗?我没有在问题中说明这一点,所以我会接受答案——谢谢@我的蝙蝠侠啊,这是我没有考虑过的。显然你需要在xlPageBreakPreview模式下才能工作,残忍的。。。更新答案。我找到了一种插入分隔符的方法,方法是执行xlWBk.Sheets(1).HPageBreaks.Add Before:=xlWBk.Sheets(1).Range(“A”&T1EndRow+1),但由于某种原因,上一页的表头会泄漏到第二页。@IAmBatman是的,我在避免
HPageBreaks.Add()
因为通常情况下,如果你的分页符为50,下一个分页符为100,并且你想将第一个分页符移动到65,那么你将得到3页,从1-50页、51-65页和66-100页:/n现在可能是这样的情况吗?在这种情况下,报告总是从头开始生成,并且只有两页长(因此只有一个分页符)T1缩放到第一页,T2中的所有其他内容都在第二页。有没有办法强制页眉在第二页上不重复?