动态打印阵列

时间:2016-09-10 20:36:42

标签: arrays vba dynamic printing

我有一本包含50多个工作表的工作簿,每个工作表都是不同的业务部门。我想设置许多宏来根据它们所在的定义组打印这些纸张的组合(例如,一个打印输出将是纸张4,12,20另一个纸张2,5,10等)。这些组合随着时间的推移会有所不同(即动态)(例如,纸张将被添加到打印组,纸张将在打印组之间重新分配等。

在另一张纸上,我想要在列中设置打印组,例如B2:B5将打印第1组(Sheet4,Sheet12,Sheet20)。 C2:C [X]打印组2等

在VBA中,如何引用这些列以选择阵列?谢谢Ben

2 个答案:

答案 0 :(得分:0)

最简单的方法是使用Enumeration和自定义函数来返回要处理的工作表数组。表格可以处理一系列工作表名称或索引。使用枚举的优点是枚举值可用于智能感知。

enter image description here

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