해결 엑셀2016윈도우10
VBA를 활용한 일괄 인쇄 명령
학생 번호를 바꾸면 해당 학생의 선택과목에 대한 통계 정보를 반환하는 시트를 제작하였습니다.
마지막으로 VBA를 활용해 학생 번호를 바꾸면서 일일이 인쇄버튼을 누르지 않아도 모든 학급 내 학생들의 데이터가 인쇄되도록 하려고 합니다.
VBA를 찾아보며 적용해봤으나 오히려 더 꼬이기만 하는 것 같아 엑셀 고수님들의 도움을 요청합니다!
"개인별 교육과정 시트" 내 G2셀에 1번부터 30번까지 입력한 결과를 자동 인쇄해주는 VBA를 어떻게 써야 할까요?
마지막으로 VBA를 활용해 학생 번호를 바꾸면서 일일이 인쇄버튼을 누르지 않아도 모든 학급 내 학생들의 데이터가 인쇄되도록 하려고 합니다.
VBA를 찾아보며 적용해봤으나 오히려 더 꼬이기만 하는 것 같아 엑셀 고수님들의 도움을 요청합니다!
"개인별 교육과정 시트" 내 G2셀에 1번부터 30번까지 입력한 결과를 자동 인쇄해주는 VBA를 어떻게 써야 할까요?
a
김
숫
혀
신
선
댓글 2
출력하시기 전에 미리보기로 페이지 설정이 제대로 되어 있는지 확인하고 실행하세요.
Sub PrintClassData() Dim sh As Worksheet, shName As Worksheet, rName As Range, vName As Variant, i As Long Dim iY As Long, iC As Long, iCnt As Long '// 사용할 시트 지정 Set sh = ActiveSheet Set shName = Worksheets("명렬표") '// 학년, 학급 확인 If Not IsNumeric(sh.Range("C2").Value2) Then Exit Sub If Not IsNumeric(sh.Range("E2").Value2) Then Exit Sub iY = CLng(sh.Range("C2").Value2) iC = CLng(sh.Range("E2").Value2) '// 학년별 명렬표 학번지정 Select Case CLng(sh.Range("C2").Value2) Case 1: Set rName = Intersect(shName.Range("B:B"), shName.UsedRange) Case 2: Set rName = Intersect(shName.Range("F:F"), shName.UsedRange) Case 3 Case Else End Select If rName Is Nothing Then Exit Sub '// 학번을 배열로 만들어 진행 vName = rName.Value2 For i = 1 To UBound(vName, 1) If vName(i, 1) Like iY & Format(iC, "00") & "*" Then iCnt = iCnt + 1 sh.Range("G2") = Right(vName(i, 1), 2) * 1 sh.Calculate sh.PrintOut End If Next i '// 결과 확인 If iCnt = 0 Then MsgBox "해당 학급이 명렬표에 없습니다." Else MsgBox iCnt & "명의 출력이 완료되었습니다." End If End Sub