확인란을 기반으로하는 내 문서의 다른 시트를 선택하는 매크로가 필요합니다. 인쇄용입니다. 나는 체크 박스 목록을 가지고 있으며 각 시트를 프린트하는 기능이 체크되어있다.매크로 확인란을 사용하여 여러 시트를 선택하려면
내 현재 매크로는 기본적으로 다음과 같이 작동
(시트 하나에 대한 체크 박스) 체크 후 시트 선택 한 다음 인쇄 선택한 시트
인 경우 만약 (시트 두 상자를 선택) 다음 시트 선택이, 다음 인쇄 선택한 시트를 확인되는 등
...
그것은 약 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은별로 도움이되지 않습니다.
코드를 보여 주실 수 있으시겠습니까? – Excellll
예, 지금 질문에 대한 수정을하고 있습니다. – Simoney