2014-04-17 2 views
0

확인란을 기반으로하는 내 문서의 다른 시트를 선택하는 매크로가 필요합니다. 인쇄용입니다. 나는 체크 박스 목록을 가지고 있으며 각 시트를 프린트하는 기능이 체크되어있다.매크로 확인란을 사용하여 여러 시트를 선택하려면

내 현재 매크로는 기본적으로 다음과 같이 작동

(시트 하나에 대한 체크 박스) 체크 후 시트 선택 한 다음 인쇄 선택한 시트

인 경우 만약 (시트 두 상자를 선택) 다음 시트 선택이, 다음 인쇄 선택한 시트를 확인되는 등

...

그것은 약 100를 통해 다음과 같이 실행

시트. 따라서 100 개의 별도 인쇄 작업이 실행됩니다. 내 일을 할 때 각 일에 대한 표지를 얻습니다. 표지는 100 장입니다.

매크로를 선택하면 WORKBOOK.SELECT 함수에 통합 문서를 추가하고 확인란을 선택하고 인쇄 기능을 모든 선택 항목과 함께 한 번 실행하면됩니다. 어떤 도움이 필요합니까?

PS- 누군가 VBA에서 해결할 수있는 솔루션을 가지고 있다면, 나는 그것에 대해서도 열려 있습니다.

PPS- 누군가 코드를 확인했습니다. 나는 이것들이 추악 할 수도 있기 때문에 교환을 쌓기에 익숙하다 ....

이렇게 작동하는 방법은 다음과 같다 : 각 체크 박스는 시트에 'prt_res'라는 셀이있다. PR001의 확인란을 선택하면 PR001 확인란과 연결된 prt_res의 셀이 TRUE로 설정됩니다. 이 매크로는 실행되어 모든 참을 찾습니다.

Mprtsel 
=IF(prt_res!B1=TRUE,GOTO(DF3),GOTO(DF5)) 
=WORKBOOK.SELECT("PR001","PR001") 
=PRINT(1,,,1,FALSE,FALSE,1,,,600,600) 
=IF(prt_res!B2=TRUE,GOTO(DF6),GOTO(DF8)) 
=WORKBOOK.SELECT("PR002","PR002") 
=PRINT(1,,,1,FALSE,FALSE,1,,,600,600) 
=IF(prt_res!B3=TRUE,GOTO(DF9),GOTO(DF11)) 
=WORKBOOK.SELECT("PR003","PR003") 
=PRINT(1,,,1,FALSE,FALSE,1,,,600,600) 
=IF(prt_res!B4=TRUE,GOTO(DF12),GOTO(DF14)) 
=WORKBOOK.SELECT("PR003A","PR003A") 
=PRINT(1,,,1,FALSE,FALSE,1,,,600,600) 
=IF(prt_res!B5=TRUE,GOTO(DF15),GOTO(DF17)) 
=WORKBOOK.SELECT("PR004","PR004") 
=PRINT(1,,,1,FALSE,FALSE,1,,,600,600) 
=IF(prt_res!B6=TRUE,GOTO(DF18),GOTO(DF20)) 
=WORKBOOK.SELECT("PR004A","PR004A") 
=PRINT(1,,,1,FALSE,FALSE,1,,,600,600) 
=IF(prt_res!B7=TRUE,GOTO(DF21),GOTO(DF23)) 
=WORKBOOK.SELECT("PR005","PR005") 
=PRINT(1,,,1,FALSE,FALSE,1,,,600,600) 

약 100 개의 다른 시트에 대해 이렇게 실행됩니다.

PPPS- 또한 이것은 끔찍한 설정이라고 알고 있습니다. 나는 이것을 쓰지 않았다. 방금 상속 받았습니다.

편집 :

오케이! 나는 그것을하기 위해 필요한 것을 수행하는 작은 VBA 함수를 작성했으며, workbook.select 함수에 연결해야하는 값을 포함하는 작은 변수를 제공한다. 이 함수는 다음과 같습니다.

이 함수의 출력은 선택한 시트 이름 목록을 쉼표로 구분 한 것입니다. 이

"PR001", "PR003", "PR301"처럼

지금 내 엑셀 매크로로 그 가치를 얻을하는 방법을 모르겠어요. 아마도 다음과 같은 것을 생각하고 있습니다.

WORKBOOK.SELECT({sConcat()}) 

하지만 나는 그렇지 않다는 것을 알고 있습니다. 그렇다면 매크로에서이 값에 어떻게 액세스합니까? Google은별로 도움이되지 않습니다.

+1

코드를 보여 주실 수 있으시겠습니까? – Excellll

+0

예, 지금 질문에 대한 수정을하고 있습니다. – Simoney

답변

0

인쇄 할 워크 시트를 모두 선택한 후 이렇게 할 수 있습니까?

ActiveWindow.SelectedSheets.PrintOut Copies:=1 
+0

문제는 선택한 워크 시트가 없다는 것입니다. 워크 시트와 관련된 상자를 확인하고 있습니다. 각 시트와 연결된 체크 박스를 기반으로 시트를 선택하는 방법을 알아야합니다. – Simoney

+0

그 일을하는 아주 지저분한 방법입니다. 확인란을 표시하는 사용자 양식을 만든 다음 선택한 항목을 차례로 선택하고 선택 한 다음 논의한 방식으로 인쇄를 수행하는 것이 좋습니다. Checkbox와 시트 이름 사이에는 상관 관계가 보이지 않으므로 여러 변경 작업을 수행하지 않아도이 작업을 수행하기가 어려울 수 있습니다. 어쩌면 [다음과 같은] (http://www.addictivetips.com/microsoft-office/insert-checkboxes-in-excel-2010/)에서 시작하여 각 확인란의 시트 이름으로 프록시 값을 작성한 후 그곳에. – Adach1979

관련 문제