我有一本包含50多个工作表的工作簿,每个工作表都是不同的业务部门。我想设置许多宏来根据它们所在的定义组打印这些纸张的组合(例如,一个打印输出将是纸张4,12,20另一个纸张2,5,10等)。这些组合随着时间的推移会有所不同(即动态)(例如,纸张将被添加到打印组,纸张将在打印组之间重新分配等。
在另一张纸上,我想要在列中设置打印组,例如B2:B5将打印第1组(Sheet4,Sheet12,Sheet20)。 C2:C [X]打印组2等
在VBA中,如何引用这些列以选择阵列?谢谢Ben
答案 0 :(得分:0)
最简单的方法是使用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
答案 1 :(得分:0)
使用此代码:
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