基于指定单元格区域选择工作表打印的VBA宏定制需求
实现基于单元格选择的工作表批量打印VBA宏
设置前提
在工作表的A1:A5区域依次填写目标工作表名称(比如"CMR 1"到"CMR 5"),B1:B5区域填写打印标记(推荐用√,也可以改成"Yes"等自定义标记),标记为有效内容的行对应的工作表会被打印4份。
修改后的VBA代码
Sub PrintSelectedSheets() Dim targetWs As Worksheet Dim controlRange As Range Dim nameCell As Range ' 指定读取选择标记的区域,这里默认用当前活动工作表的A1:B5 Set controlRange = ActiveSheet.Range("A1:B5") ' 遍历A列的每个工作表名称单元格 For Each nameCell In controlRange.Columns(1).Cells ' 检查对应B列的打印标记是否有效(这里判断为"√",可自行修改) If nameCell.Offset(0, 1).Value = "√" Then ' 容错处理:避免工作表名称错误导致宏中断 On Error Resume Next Set targetWs = ThisWorkbook.Sheets(nameCell.Value) On Error GoTo 0 ' 如果找到对应工作表,执行打印 If Not targetWs Is Nothing Then targetWs.PrintOut Copies:=4 End If End If Next nameCell End Sub
代码说明
- 若要固定读取标记的工作表(比如专门的"打印设置"表),把
ActiveSheet替换为具体工作表名,示例:Set controlRange = ThisWorkbook.Sheets("打印设置").Range("A1:B5") - 可根据习惯修改打印标记的判断条件,比如把
"√"改成"Yes"或1(数字1) - 加入了容错处理,就算A列填写的工作表名不存在,宏也会继续执行其他有效项
内容的提问来源于stack exchange,提问作者perbrethil
相关产品推荐
相关产品推荐

