【问题标题】:Dynamic printing array动态打印数组
【发布时间】:2017-01-18 17:08:20
【问题描述】:
我有一个包含 50 多个工作表的工作簿,每个工作表都是不同的业务部门。我想设置许多宏来根据它们所在的定义组打印这些工作表的组合(例如,一个打印输出是工作表 4、12、20,另一个是工作表 2、5、10 等)。这些组合会随着时间的推移而变化(即动态)(例如,工作表将添加到打印组中,工作表将在打印组之间重新分配等。
在另一张纸上,我想在列中设置打印组,例如B2:B5 将打印组 1(Sheet4、Sheet12、Sheet20)。 C2:C[X] 打印组 2 等
在 VBA 中,如何引用这些列来选择数组?谢谢本
【问题讨论】:
标签:
arrays
vba
dynamic
printing
【解决方案1】:
最简单的方法是使用 Enumeration 和自定义函数来返回要处理的工作表数组。工作表可以处理工作表名称或索引的数组。使用枚举的优点是枚举值可用于智能感知。
Enum PrintDivisions
EastSide
WestSide
Central
NorthAmerica
End Enum
Function getPrintDivision(Division As PrintDivisions)
Select Case Division
Case PrintDivisions.Central
getPrintDivision = Array(Sheet1.Name, Sheet3.Name)
Case PrintDivisions.EastSide
getPrintDivision = Array("South East", "East East", 1, Sheet5.Name)
Case PrintDivisions.WestSide
getPrintDivision = Array(Sheet1.Name, Sheet3.Name, Sheet3.Name)
Case PrintDivisions.NorthAmerica
getPrintDivision = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
End Select
End Function
Sub DivisionPrintOut()
Sheets(getPrintDivision(NorthAmerica)).PrintOut Copies:=3
End Sub
【解决方案2】:
使用此代码:
Dim rng As Range, shtGroups As Worksheet
Set shtGroups = ThisWorkbook.Sheets("Groups")
Set rng = shtGroups.Range(shtGroups.Range("B2"), _
shtGroups.Cells(Rows.Count, "B").End(xlUp))
ThisWorkbook.Sheets(Application.Transpose(rng)).PrintOut