在特定值后每 x 行添加分页符 excel vba
Add page break every x rows after specific value excel vba
我很难弄清楚如何组合我拥有的两个宏(见下文)。我想要实现的是每(比方说)80 行自动插入一个分页符。现在是我似乎无法管理的部分。
每80行后,它会在H列中搜索到第一个特定搜索值"total"并添加分页符,因此第80行的分页符只能更改为更少(例如第75行)。问题是在 80 行的范围内有多个 "total"。所以它必须搜索第 80 行之前的最后一个 "total"。
在前 80 行中找到最后一个 "total" 后,它必须对接下来的 80 行执行相同的操作。因此,如果分页符位于第 75 行,则下一个范围必须搜索到第 155 行并再次执行相同操作,依此类推。
我有两个单独的代码可以使用。第一个每 80 行添加一个分页符。
第二个搜索所有值 "total"。所以现在第 30、42、75 行有分页符(这些值每个项目都不同),我只想要最后一个最接近的行 80。
这是我找到的第一个代码:
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Lastrow1 = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, _
LookIn:=xlValues, SearchDirection:=xlPrevious).row
Worksheets("sheet1").PageSetup.PrintArea = "$B11:$L" & Lastrow1 + 1
Dim Lastrow As Long
Dim Row_Index As Long
Dim RW As Long
RW = 80
With ActiveSheet
.ResetAllPageBreaks
Lastrow = .Cells(rows.Count, "H").End(xlUp).row + 1
For Row_Index = RW + 1 To Lastrow Step RW
.HPageBreaks.Add Before:=.Cells(Row_Index, 1)
Next
End With
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
这是第二个代码:
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Lastrow = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, _
LookIn:=xlValues, SearchDirection:=xlPrevious).row
Worksheets("sheet1").PageSetup.PrintArea = "$B11:$L" & Lastrow + 1
Dim row As Range
ActiveSheet.ResetAllPageBreaks
For Each row In ActiveSheet.UsedRange.rows
Select Case row.Cells(8).Text
Case "Total:"
ActiveSheet.HPageBreaks.Add Before:=row.Cells(1).Offset(6, 0)
End Select
Next row
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
希望我正确解释了我的问题。谢谢你的时间。
Sub Macro1()
Dim lastrow As Long, rngTemp As Range
lastrow = Range("H1").Offset(Rows.Count - 1).End(xlUp).Row
Set rngTemp = Range("H1")
Do While rngTemp.Row <> lastrow
Set rngTemp = Range("H1", rngTemp.Offset(80)).Find(What:="Total", SearchDirection:=xlPrevious)
rngTemp.Parent.HPageBreaks.Add Before:=rngTemp.Offset(1, -7)
Loop
End Sub
我很难弄清楚如何组合我拥有的两个宏(见下文)。我想要实现的是每(比方说)80 行自动插入一个分页符。现在是我似乎无法管理的部分。
每80行后,它会在H列中搜索到第一个特定搜索值"total"并添加分页符,因此第80行的分页符只能更改为更少(例如第75行)。问题是在 80 行的范围内有多个 "total"。所以它必须搜索第 80 行之前的最后一个 "total"。
在前 80 行中找到最后一个 "total" 后,它必须对接下来的 80 行执行相同的操作。因此,如果分页符位于第 75 行,则下一个范围必须搜索到第 155 行并再次执行相同操作,依此类推。
我有两个单独的代码可以使用。第一个每 80 行添加一个分页符。
第二个搜索所有值 "total"。所以现在第 30、42、75 行有分页符(这些值每个项目都不同),我只想要最后一个最接近的行 80。
这是我找到的第一个代码:
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Lastrow1 = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, _
LookIn:=xlValues, SearchDirection:=xlPrevious).row
Worksheets("sheet1").PageSetup.PrintArea = "$B11:$L" & Lastrow1 + 1
Dim Lastrow As Long
Dim Row_Index As Long
Dim RW As Long
RW = 80
With ActiveSheet
.ResetAllPageBreaks
Lastrow = .Cells(rows.Count, "H").End(xlUp).row + 1
For Row_Index = RW + 1 To Lastrow Step RW
.HPageBreaks.Add Before:=.Cells(Row_Index, 1)
Next
End With
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
这是第二个代码:
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Lastrow = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, _
LookIn:=xlValues, SearchDirection:=xlPrevious).row
Worksheets("sheet1").PageSetup.PrintArea = "$B11:$L" & Lastrow + 1
Dim row As Range
ActiveSheet.ResetAllPageBreaks
For Each row In ActiveSheet.UsedRange.rows
Select Case row.Cells(8).Text
Case "Total:"
ActiveSheet.HPageBreaks.Add Before:=row.Cells(1).Offset(6, 0)
End Select
Next row
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
希望我正确解释了我的问题。谢谢你的时间。
Sub Macro1()
Dim lastrow As Long, rngTemp As Range
lastrow = Range("H1").Offset(Rows.Count - 1).End(xlUp).Row
Set rngTemp = Range("H1")
Do While rngTemp.Row <> lastrow
Set rngTemp = Range("H1", rngTemp.Offset(80)).Find(What:="Total", SearchDirection:=xlPrevious)
rngTemp.Parent.HPageBreaks.Add Before:=rngTemp.Offset(1, -7)
Loop
End Sub