|
급여명세서 출력할때 전체보기에서 월별로 지정해서 가로로 두명씩 출력을 하려고 하는데
에러가 나는데~ 이 이상은 제 머리에 한계가 오네요~
어떻게 하면 좋을지 답변 좀 부탁드려요~
Sub 명세서인쇄() Dim rng시작 As Range Dim i As Long Dim iPage As Integer, i확인 As Integer Dim nm이름 As Name Set rng시작 = Range("nm출력범위").Range("A1").Offset(1, 0) If rng시작 = "" Then MsgBox "인쇄할 내용이 없습니다.", vbInformation, "자료없음" Exit Sub End If iPage = (Range("nm출력범위").CurrentRegion.Rows.Count - 1) '--// 엑셀 2003 이전에서는 65536 행까지만 지원하나 2007이상에서는 1048576행까지 지원 If iPage > (1048576 / 31) Then MsgBox "한번에 인쇄할 수 있는 페이지 수가 넘습니다." Exit Sub End If i확인 = MsgBox("전체 인쇄할 페이지 수는 【" & _ iPage & "】페이지 입니다. 인쇄방법을 선택하세요." _ & String(2, vbCr) & _ "[예] - 미리보기 실행" & vbCr & _ "[아니오] - 미리보기 없이 바로 인쇄" & vbCr & _ "[취소] - 인쇄 작업 취소" _ , vbYesNoCancel + vbQuestion, "미리보기") If i확인 <> vbYes And i확인 <> vbNo Then Exit Sub Application.ScreenUpdating = False For Each nm이름 In Names If Not (nm이름.Name Like "nm*") Then nm이름.Delete End If Next With Sheets("급여_DB") Range(.Range("A4"), .Range("A4").End(xlToRight).End(xlDown)).CreateNames _ Top:=True, Left:=False, Bottom:=False, Right:=False End With Sheets("급여명세서").Rows("31:65536").Delete Do While rng시작.Offset(i, 0) <> "" With Sheets("급여명세서") If i > 0 Then .Rows("1:31").Copy .Rows(31 * i + 1).PasteSpecial End If .Range("B" & 1 + 31 * i) = rng시작.Offset(i, 0) & "년 " & rng시작.Offset(i, 1) & "월 분 급/상여명세서" .Range("j" & 1 + 31 * i) = rng시작.Offset(i, 0) & "년 " & rng시작.Offset(i, 1) & "월 분 급/상여명세서" .Range("B" & 2 + 31 * i) = "'" & rng시작.Offset(i, 0) & rng시작.Offset(i, 1) & rng시작.Offset(i, 2) .Range("j" & 2 + 31 * i) = "'" & rng시작.Offset(i, 0) & rng시작.Offset(i, 1) & rng시작.Offset(i, 2) End With i = i + 1 Loop Sheets("전체작업").Select Application.CutCopyMode = False Application.ScreenUpdating = True Select Case i확인 Case vbYes: Sheets("급여명세서").PrintOut Preview:=True Case vbNo: Sheets("급여명세서").PrintOut Preview:=False End Select End Sub
|