请点击输入图片描述 老规矩复制以下VBA代码到excel的VBA编辑器中: '===========我就是那传说中的分割线=============== Sub 调整水平分页符位置() Dim index!, theHPageBreaksCount!, rng!, temp, count!, index2!, mark As String Dim a As Range mark = A '要判断的合并单元格所在列 index2 = 1 '要判断的合并单元格所在列 theHPageBreaksCount = ActiveSheet.HPageBreaks.count '获取当前工作表总的分页数
'当调整分页符的时候总分页数会增多,这里预估会多出50页以内,一般够用,如果不够用可以将50改大点的数 For rng = 1 To theHPageBreaksCount + 50
On Error Resume Next '发生错误直接跳出循环,结束运行 Set a = ActiveSheet.HPageBreaks(rng).Location
Do Until Cells(index, index2).MergeCells = False Or (Cells(index, index2).MergeCells = True And (index = Cells(index, index2).MergeArea.Row Or index = (Cells(index, index2).MergeArea.count + Cells(index, index2).MergeArea.Row)))
Application.StatusBar = 正在调整第 & rng & 分页符,请稍候………… count = 1 + count index = index - 1 Set ActiveSheet.HPageBreaks(rng).Location = Range(mark & index)
Loop
Next Application.StatusBar = MsgBox 执行完毕!共调整 & count & 页分页符 End Sub '===========我就是那传说中的分割线=============== 不知道如何使用VBA,请参考: 6怎么批量修改文件名-高级篇 如果你合并的单元格不在第一列,就需要修改代码中的参数值: mark = A '要判断的合并单元格所在列 index2 = 1 '要判断的合并单元格所在列 例如你合并的单元格在第二列(B列)就改为: mark = B '要判断的合并单元格所在列 index2 = 2 '要判断的合并单元格所在列