엑셀 VBA 수능시험장 배치 현황 작성용 매크로(명단 작성용)
전체 기초데이터에서 조건에 맞는 데이터만 불러와서 명단(출석부 등) 동적 생성
기초데이터에서 조건에 맞는 데이터만 가져와서 명단(출석부, 등록부 등) 만들기 매크로
Sub Import()
Application.ScreenUpdating = False
'불러온 데이터부분 양식 범위를 초기화한다.
Range(Cells(4, 1), Cells(500, 8)) = ""
'numb, locat 변수 초기값 설정
numb = 1
locat = 4
'데이터가 있는 셀의 수를 계산하여 데이터가 있는 셀까지 For 문을 돌린다.
'MsgBox (Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row) 맨 마지막 셀까지 For 문
For i = 2 To Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
'조건은 시트2에 걸고, 불러올 기초데이터는 시트1에 있음. 6번째 열 i번째 행이 조건에 맞으면
If Sheets(2).Cells(3, 11) = Sheets(1).Cells(i, 6) Then
Sheets(2).Cells(locat, 1) = numb
Sheets(2).Cells(locat, 2) = Sheets(1).Cells(i, 7) '출신학교
Sheets(2).Cells(locat, 3) = Sheets(1).Cells(i, 2) '접수번호
Sheets(2).Cells(locat, 4) = Sheets(1).Cells(i, 3) '성명
Sheets(2).Cells(locat, 5) = Sheets(1).Cells(i, 1) '수험번호
Sheets(2).Cells(locat, 6) = Sheets(1).Cells(i, 9) '시험장명
Sheets(2).Cells(locat, 7) = Sheets(1).Cells(i, 10) '시험실
locat = locat + 1
numb = numb + 1
'End If
'End If
End If
Next i
' 모든 데이터를 불러온 후 이하 여백 표시
Sheets(2).Cells(locat, 2) = "- 이하 여백 -"
' 불러온 데이터 수를 알려줌
MsgBox (Sheets(2).Cells(3, 11) & "에서 접수한 " & locat - 4 & "명을 불러왔습니다.")
' 유동적으로 인쇄영역을 설정하기 위해 페이지 레이아웃 설정을 한다.
Dim PrintOutRange As String
PrintOutRange = "A1:H" & locat + 1
Dim MyPrintArea As Range
Set MyPrintArea = ActiveSheet.Range(PrintOutRange)
ActiveSheet.PageSetup.PrintArea = PrintOutRange
End Sub