2016-09-10 2 views
-1

각기 다른 사업부 인 50 개 이상의 워크 시트가있는 통합 문서가 있습니다. 정의 된 그룹 (예 : 한 장의 인쇄물은 장 4, 12, 20 개의 다른 장 2, 5, 10 등)을 기준으로 이러한 시트의 조합을 인쇄하기 위해 수많은 매크로를 설정하려고합니다. 이러한 조합은 시간이 지남에 따라 다양합니다 (예 : 인쇄 그룹에 시트가 추가되고 인쇄 그룹간에 시트가 다시 할당됩니다.)동적 인쇄 배열

별도의 시트에서 인쇄 그룹을 열에 설정하려고합니다. 예 : B2 : B5는 그룹 1 (Sheet4, Sheet12, Sheet20)을 인쇄합니다 C2 : C [X] 인쇄 그룹 2 등

VBA 내에서 배열을 선택할 때이 열을 어떻게 참조합니까? 감사합니다.

답변

0

가장 쉬운 방법은 사용자 지정 함수와 결합 된 열거 형을 사용하여 처리 할 워크 시트 배열을 반환하는 것입니다. 시트는 시트 이름 또는 인덱스 배열을 처리 할 수 ​​있습니다. 열거 형을 사용하면 열거 형 va 입술은 인텔리 센스에서 사용할 수 있습니다.

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