2016-09-10 5 views
-1

私は50以上のワークシートを持つワークブックを持っています。私は定義されたグループに基づいてこれらのシートの組み合わせを印刷するために多数のマクロを設定したいと考えています(例えば、1枚は4,12,20枚、2,5,10などは印刷されます)。これらの組み合わせは、時間の経過と共に変化する(すなわち、シートが印刷グループに追加され、シートが印刷グループ間で再割り当てされるなど)。動的印刷配列

別紙では、列に印刷グループを設定したい私は配列を選択する目的のためにこれらの列を参照しない方法VBA内でC [X]印刷群2など

、ありがとうベン

:例えばB2:B5印刷なるグループ1(シート4、Sheet12、Sheet20)C2。?

答えて

0

最も簡単な方法は、カスタム関数と組み合わせた列挙型を使用して、処理するワークシートの配列を返すことです。シートは、シート名またはインデックスの配列を処理できます。列挙型を使用する利点は、インテリセンスには、ルーズがあります。

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 
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