Dim rngID As Range: Set rngID = [idxCode] Dim cntDB As Double: cntDB = [myDB].Rows.Count Dim i As Long
For i = 1 To cntDB - 1 rngID.Value = i '### 실제 인쇄할때는 아래 미리 보기 코드를 저 아래 PrintOut코드로 대체하면 됩니다. ActiveWindow.SelectedSheets.PrintPreview ' ActiveWindow.SelectedSheets.PrintOut Next i
자인님.. 안녕하세요?
코드 자체가 논리에 맞지 않구요... 불필요한 배열을 너무 많이 쓰시네요..
vba로 짤 이유가 없는 것 같습니다.
피복명단 시트에 있는 명단으로 개인별 급대여품카드를 작성할때..
메인페이지에서 정보를 갖고와서 박아버리는게 좋았을것을.. 개인별 카드를 작성하는 코드는 없네요?
암튼.. 현재 데이터 상태에서는 수식으로 필요한 값을 불러오는 것만으로도 충분히 원하는 결과를 얻을 수 있을 것 같습니다.
D6셀에 아래 수식을 넣으시고.. 아래쪽은 채우기하세요..
=IF(B6="","",IF(VLOOKUP(A6,메인페이지!$A:$J,4,0)=0,"",VLOOKUP(A6,메인페이지!$A:$J,4,0)))
보통은..
데이터베이스(예제에서는 "피복명단")에서 양식에 맞춰 인쇄를 할때에는
양식지는 하나만 두고, 개인별 카드를 만들어서 바로 바로 인쇄 보내버리는 방법을 씁니다.
개인별 카드를 아래쪽으로 쭉 만들어서 한번에 인쇄하진 않구요..
이 방법을 응용하면,
개인별 급여명세서나, 주식매매계약서, 우편 주소 라벨 등도 쉽게 제작할 수 있습니다. ^^
첨부파일을 참고하세요..
다운받기 : abyulQnA_card_20110704-1.xlsm
관련 코드를 작성해봤습니다.
[idxCode]와 [myDB]는 웍크시트에서 미리 정의해논 영역 이름입니다.
Sub printEachCard()
Dim rngID As Range: Set rngID = [idxCode]
Dim cntDB As Double: cntDB = [myDB].Rows.Count
Dim i As Long
For i = 1 To cntDB - 1
rngID.Value = i
'### 실제 인쇄할때는 아래 미리 보기 코드를 저 아래 PrintOut코드로 대체하면 됩니다.
ActiveWindow.SelectedSheets.PrintPreview
' ActiveWindow.SelectedSheets.PrintOut
Next i
End Sub
도움이 되셨기를..