메뉴
해결 M365윈도우11

vba 인쇄 범위 선택 시 중복 값은 한 번만 출력되게 코드 넣는법 부탁드립니다.

니
2월 15일 조회 2,162
 

안녕하세요.

업무 간소화를 위해 노력하는 직장인 입니다.

현재 구현되어있는 인쇄 코드를 수정하고자 합니다.

동작은 인쇄 버튼을 클릭하면 아래와 같은 상자가 뜨며 범위를 마우스로 드래그하게 되어 있습니다.


 

결의서번호를 드래그 하면 아래와 같은 사진입니다.

확인을 누르면 범위 값이 인쇄 영역에 들어가 3장 인쇄 됩니다.

범위에 따라 출력되는 장수가 다릅니다.

문제는 범위(결의서번호)에 같은 숫자가 중복되면 중복된 만큼 출력됩니다.

위 사진을 예로 범위에서 중복된 값 1이 2개 있습니다.  범위 설정 시 1~5번 잡았을 경우 총 6장이 출력 됩니다. 

범위에 중복되는 값이 있으면 그 값은 한 번만 출력 하려면 어떻게 손봐야 할까요?

현재 코드는 아래와 같습니다. 고수님들 부탁드립니다.

Sub 양식인쇄()

Dim inRange As Range

Dim prRange As Range

Dim Ws As Worksheet

Set Ws = Worksheets("지출 데이터")

Ws.Select

처음:

On Error GoTo 에러처리

Set inRange = Application.InputBox("인쇄할 결의서번호 범위를 설정하세요", Type:=8)

For Each prRange In inRange

If prRange.Column <> 1 Then

MsgBox "결의서번호 기준으로 선택하세요"

GoTo 처음

End If

Next

For Each prRange In inRange

[인쇄번호] = Ws.Cells(prRange.Row, 1)

Worksheets("인쇄영역").PrintOut

Next

Exit Sub

에러처리:

MsgBox "인쇄를 취소합니다"

End Sub


 

댓글 5

더
더블유에이 2월 15일
원하시는게 맞는지 모르겠지만 아래 처럼 수정해보세요
Dim x As Long
x = 1
For Each prRange In inRange
  If Application.WorkSheetFunction.CountIf(prRange.Cells(1,1).Resize(x,1),inRange) <= 1 Then
    [인쇄번호] = Ws.Cells(prRange.Row, 1)
    Worksheets("인쇄영역").PrintOut
  End If
  x = x + 1
Next

니
니가가라 하와이 작성자 2월 15일
@더블유에이 님 안녕하세요. 답변감사합니다.

코드 추가 후 아래와 같이 범위 설정하니



바로 인쇄 취소 문구로 넘어가 버립니다.



 

범위를 한 셀만 설정하면 했을 땐 인쇄됩니다. ㅜㅜ
더
더블유에이 채택된 답변 2월 15일
아 범위를 잘못 적어드렸네요

아래처럼 수정해보세요
Dim x As Long
x = 1
For Each prRange In inRange
  If Application.WorkSheetFunction.CountIf(inRange.Cells(1,1).Resize(x,1),prRange) <= 1 Then
    [인쇄번호] = Ws.Cells(prRange.Row, 1)
    Worksheets("인쇄영역").PrintOut
  End If
  x = x + 1
Next

 
니
니가가라 하와이 작성자 2월 16일
@더블유에이 님 빠른 답변 감사합니다.

좋은 하루 보내세요^^
최
최이나짜응 8월 5일
@더블유에이 님 감사합니다

질문답변 게시판의 최근 글

스크랩 완료