作者:绿色风
分类:
时间:2022-08-17
浏览:138
楼主 kevinchengcw |
Q: 如何用代码将文本列中同样的内容分到一个自然页中并在后面补满空单元格? A: 代码如下:
- Sub test()
- Dim Str As String
- Dim N, I, T As Long
- Application.ScreenUpdating = False '因为操作时间比较长,关闭屏幕刷新以提高处理速度
- ActiveSheet.ResetAllPageBreaks '重置页内所有分页符,这样就可以依默认设定在满一页的地方自动出现分页符
- ActiveWindow.View = xlPageBreakPreview '设定浏览样式为分页浏览(注:用vba设定分页符类的操作基本都要用到这一模式)
- For N = Cells(Rows.Count, 2).End(3).Row To 2 Step -1 '从数据的最后一个向前循环
- If Cells(N, 2) <> Cells(N, 2).Offset(1, 0) Then Rows(N + 1).Resize(ActiveSheet.HPageBreaks(1).Location.Row).Insert '如果当前单元格与下一单元格内容不同,则在下一单元格所在行开始插入第一个分页符所在位置的行数数量的空行(注:这样可以保证每个字段都超过一页,但最保险的方式是判断所有分页符间距行数的最大值来作为插入行的依据)
- Next N
- Str = Cells(Cells(Rows.Count, 2).End(3).Row, 2).Value '设定字符串变量等于最后一个数据的值(注:目的是用来作为停止标识)
- For N = 1 To ActiveSheet.HPageBreaks.Count '从第一个分页符开始向下循环
- I = ActiveSheet.HPageBreaks(N).Location.Row '将分页符所在的行数值赋值给变量I
- Do While Cells(I, 2) = "" 'I值递增,直到对应的单元格不为空,即到了下一个数据段区域
- I = I + 1
- Loop
- Rows(ActiveSheet.HPageBreaks(N).Location.Row & ":" & I - 1).Delete '删除当前分页符所在行到下一数据段起始行的上一行之间的空行,这样,下一数据段的起始位置就处于了分页符所在行的位置
- If WorksheetFunction.CountIf(Range(Cells(I, 2), Cells(Cells(Rows.Count, 2).End(3).Row, 2)), Str) = Cells(Rows.Count, 2).End(3).Row - I + 1 Then Exit For '如果当前分页符所在行的数据与最后一个数据间的区域中最后一个数据的个数与行数相同,则说明到了最后一个数据段,则跳出循环
- Next N
- ActiveWindow.View = xlNormalView '恢复为普通视图模式
- Application.ScreenUpdating = True '打开屏幕刷新
- MsgBox "处理完成" '显示提示信息
- End Sub
附示例文件。 将指定列不同名称内容插入空格满一打印页.rar |
2楼 TokiGi |
排队学习~ |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一