전문지식 함양/TIL

[Microsoft Excel] 엑셀 매크로 작성1

샤프펜슬s 2023. 4. 21. 19:26

1. 엑셀파일의 구조

1.1. 매크로 실행 시트 (탭 이름 : 이름)

매크로를 실행하는 시트

 

(1) 성명 : 성명 아래 작성된 이름에 따라 양식이 변경됨.

(2) "통합양식생성" 단추 : 해당 단추를 누르면 매크로 실행

 

1.2. 양식 시트 (탭 이름 : 양식)

매크로 실행에 따라 일정한 셀의 값이 변경되는 시트.

양식 시트

 

2. 결과

2.1. "통합양식생성" 단추를 눌렀을 때

 

2.2. "통합양식생성 매크로" 창에서 "예(Y)"를 눌렀을 때

2.3. 결과

- 노란색 셀의 값이 "대상자 : "에서 "대상자 : a"로 변경된 모습

- "이름" 탭의 "성명" 셀 아래의 순서대로 탭이 생성되었다.

 

3. 코드

Sub 통합양식생성()

'해당 매크로를 실행시킬 것인지 묻는 대화창 출력
'대화창에 배정될 변수명 : confirm
Dim confirm
confirm = MsgBox("A열에 포함된 모든 열을 대상으로 양식이 생성됩니다. 진행합니까?", vbYesNo, "통합양식생성 매크로")

'만약 사용자가 예(6)로 입력할 경우
If confirm = 6 Then
Dim a As Integer
Dim b As Long
'b = 마지막 셀의 행값을 반환합니다.
b = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row

'A열의 첫번째부터 마지막까지 반복합니다.
For a = 2 To b
Worksheets("이름").Select
Set 양식 = Worksheets("양식")
'"성명" 아래에 입력된 데이터 순서대로 Name변수에 배정
Name = Cells(a, 1)

'양식 시트의 "대상자" 2행 ~ 행의 끝까지 반환한다.
양식.Cells(2, 1).Value = "대상자 : " & Name

'이름별 시트 생성'
Sheets("양식").Copy after:=Worksheets(Worksheets.Count)
'대상자의 이름과 구분선, 그리고 번호로 탭을 구분한다
Worksheets(Worksheets.Count).Name = Name & "_" & a - 1
Next
Worksheets("이름").Select

'모든 반복이 끝나면 몇 개의 탭이 생성되었는지를 출력하는 대화창 출력
MsgBox "총 " & b - 1 & "개의 양식이 생성되었습니다.", vbOKOnly, "통합양식생성 완료"
End If



End Sub