【问题标题】: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
      

      【讨论】:

        猜你喜欢
        • 2012-05-07
        • 1970-01-01
        • 1970-01-01
        • 2019-05-31
        • 2018-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多