【发布时间】:2017-07-24 21:44:21
【问题描述】:
我正在尝试清理自动水平分页符如何落在我的工作表上。如果自动分页符没有超出“D”列中的短语“总体状态”,我想将“总体状态”下方的下一个最近的水平分页符向上移动。下面是一个代码 sn-p,它在 D 列中显示“总体状态”的所有行上方放置一个水平分页符,但分页符太多了。
Sub Pagebreak()
'adds horizontal pagebreak before every 'Overall Status'
Dim Search As String
Search = "Overall Status"
With ActiveSheet.UsedRange
Set c = .Find(What:=Search, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
If Not c Is Nothing Then
FirstAddress = c.Address
Do
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=c
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> FirstAddress
End If
'Then try toggle between pagebreak screen and normal view
End With
End Sub
下面代码的 sn-p 显示了现有水平分页符当前所在的位置:
Sub HPageBreakTest()
'counts and shows where horizontal pagebreaks are
Dim pgeBreak As HPageBreak
With ActiveSheet
.Cells(65536, 1).Select
MsgBox .HPageBreaks.Count & " Horizontal page breaks counted"
For Each pgeBreak In .HPageBreaks
MsgBox "pgbreak at row: " & pgeBreak.Location.row
.Cells(65536, 1).Select
Next pgeBreak
.Cells(1, 1).Select
End With
End Sub
我想弄清楚如何结合这两个代码 sn-ps 的逻辑,以 (1) 在“总体状态”下方找到第一个自动水平分页符,以及 (2) 将该分页符移动到上方D 列中的“总体状态”短语。不是每个“总体状态”实例的水平分页符。我希望我的问题是有道理的。提前感谢您的帮助。
【问题讨论】: