ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 108|回复: 1

求助大神,请大神帮忙修改,按指定列行进行打印代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-8-11 15:27 | 显示全部楼层 |阅读模式
求助大神,请大神帮忙修改,按指定列行进行打印代码

指定行打印.rar

21.16 KB, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2024-8-11 16:37 | 显示全部楼层
试试这样符不符合?

  1. Sub PrintRowsInBatchesWithPreview()
  2.     Dim ws As Worksheet
  3.     Dim selectedColumns As String
  4.     Dim columnArray() As String
  5.     Dim i As Integer
  6.     Dim printRange As Range
  7.     Dim rowsPerPage As Integer
  8.     Dim lastRow As Long
  9.     Dim currentRow As Long
  10.     Dim batchStartRow As Long
  11.     Dim batchEndRow As Long
  12.     Dim userResponse As VbMsgBoxResult

  13.     ' 输入要打印的列号或列字母,用逗号分隔
  14.     selectedColumns = "A,B"  ' 例如打印A列、C列和E列

  15.     ' 每页打印的行数
  16.     rowsPerPage = 5  ' 例如每页打印5行

  17.     ' 将列号或字母转换为数组
  18.     columnArray = Split(selectedColumns, ",")

  19.     ' 选择要打印的工作表
  20.     Set ws = ThisWorkbook.Sheets("Sheet1")  ' 这里将"Sheet1"替换为你的工作表名

  21.     ' 获取工作表的最后一行
  22.     lastRow = ws.Cells(ws.Rows.Count, columnArray(0)).End(xlUp).Row
  23.     currentRow = 1

  24.     ' 遍历并打印每一批次的行
  25.     Do While currentRow <= lastRow
  26.         batchStartRow = currentRow
  27.         batchEndRow = Application.Min(currentRow + rowsPerPage - 1, lastRow)

  28.         ' 初始化打印范围
  29.         Set printRange = ws.Range(columnArray(0) & batchStartRow & ":" & columnArray(0) & batchEndRow)

  30.         ' 将所有指定列的范围合并
  31.         For i = 1 To UBound(columnArray)
  32.             Set printRange = Union(printRange, ws.Range(columnArray(i) & batchStartRow & ":" & columnArray(i) & batchEndRow))
  33.         Next i

  34.         ' 设置打印范围
  35.         ws.PageSetup.PrintArea = printRange.Address

  36.         ' 先预览打印内容
  37.         ws.PrintPreview

  38.         ' 提示用户是否要打印
  39.         userResponse = MsgBox("要打印当前页吗?", vbYesNo + vbQuestion, "打印确认")

  40.         If userResponse = vbYes Then
  41.             ws.PrintOut
  42.         End If

  43.         ' 移动到下一批次的起始行
  44.         currentRow = batchEndRow + 1
  45.     Loop

  46.     MsgBox "打印操作完成!"
  47. End Sub

复制代码


您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 12:29 , Processed in 0.024739 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表