【问题标题】:Add page break every x rows after specific value excel vba在特定值excel vba之后每x行添加分页符
【发布时间】:2015-03-10 09:09:57
【问题描述】:

我很难弄清楚如何组合我拥有的两个宏(见下文)。我想要实现的是每(比如说)80 行自动插入一个分页符。现在是我似乎无法管理的部分。

每 80 行之后,它会在 H 列中搜索到第一个特定搜索值“total”并添加分页符,因此第 80 行中的分页符只能更改为更少(例如第 75 行)。问题是在 80 行的范围内有多个“总数”。所以它必须在第 80 行之前搜索最后一个“总计”。

在前 80 行中找到最后一个“总数”后,它必须对接下来的 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

我希望我正确地解释了我的问题。感谢您的宝贵时间。

【问题讨论】:

    标签: vba excel page-break


    【解决方案1】:
    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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多