- 최초 작성일: 2002-01-25
- 최종 수정일: 2026-09-30
- 조회수: 9 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 자동고침 기능 응용 예제
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
'도구' 메뉴에 보면 '자동 고침 옵션'이라는 메뉴가 있습니다. 이것은 아주 예전에(X0088 강좌로군요. 그러고 보니 2년도 훨씬 넘었습니다 ^^) 소개해 드린 편리한 기능인데 많이들 사용하시나 모르겠습니다.
데이터를 입력할 때 "아이오페 스팟 솔루션"이라는 긴 이름을 매번 다 적으려면 힘이 들겠지요? 이런 경우에 "자동 고침 목록"에 등록을 해 두면 "아이"라고만 입력해도 전체 상품명이 자동으로 다 입력이 되므로 매우 편리합니다. 아래의 셀에다가 '아이'라고만 입력하고 엔터키를 쳐 보세요.
자동고침 기능 응용 예제
핵심 요약: 자동 고침 목록 관리
ReplacementList로 등록된 자동 고침 목록을 배열로 읽고, AddReplacement와 DeleteReplacement로 시트에 정리한 목록을 한꺼번에 추가하거나 지울 수 있습니다.
- 1단계: ReplacementList를 읽어 새 시트에 입력 문장과 고쳐질 문장을 나열합니다.
- 2단계: 추가List 시트의 목록을 AddReplacement로 등록합니다.
- 3단계: 특정 조건(예: L로 시작)의 항목을 DeleteReplacement로 삭제합니다.
Step 1: 자동 고침 목록 살펴보기
그러면 어떤 자동 고침 목록들이 현재 등록되어 있나 살펴보도록 할까요?
엄청나게 많은 목록들이 나타나지요? 어떤 목록들이 들어있나 알아보기 위해 아래와 같은 코드를 사용하였습니다.
Sub ViewAutoCorrectObject()
Dim intX As Integer
Dim varList As Variant
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("등록된 자동고침 목록").Delete
Worksheets.Add.Name = "등록된 자동고침 목록"
On Error GoTo 0
'''동일한 시트가 있나없나 확인을 하는 또다른 방법입니다. 대개의 경우, For Each ~ Next
'''순환문을 사용하여 일일이 검색을 하지만 위와 같이 On Error 문을 사용할 수도 있습니다.
[A1:B1] = Array("입력하는 문장", "자동으로 고쳐지는 문장")
varList = Application.AutoCorrect.ReplacementList
For intX = 1 To UBound(varList)
With [A1]
.Offset(intX, 0) = varList(intX, 1)
.Offset(intX, 1) = varList(intX, 2)
End With
Next intX
Cells.Columns.AutoFit
Cells.Font.Name = "바탕체"
[A1].CurrentRegion.AutoFormat Format:=xlRangeAutoFormatList2, Number:=True, Font:= _
True, Alignment:=True, Border:=True, Pattern:=True, Width:=True
MsgBox "모두 " & UBound(varList) & "개의 자동 고침 목록이 등록되어 있습니다!" _
, , "목록 작성 완료//By Exceller"
Application.DisplayAlerts = True
End Sub
목록을 넣을 시트가 이미 있는지 확인하는 부분에서는 On Error 문을 사용하였습니다. 동일한 시트가 있나 없나 확인을 하는 또다른 방법입니다. 대개의 경우, For Each ~ Next 순환문을 사용하여 일일이 검색을 하지만 위와 같이 On Error 문을 사용할 수도 있습니다.
Step 2: 나만의 목록 추가하기
만약 팀원들간에 공통으로 사용하는 목록을 별도의 시트에 만들어 두고 이것을 사용할 수도 있겠지요? 예를 들어, 옆에 있는 '추가List'라는 시트에 자기 팀원들이 사용하는 리스트들을 등록해 두고 함께 사용할 수도 있습니다. 마치 야구에서 감독이 선수들에게 자기들만 아는 싸인을 사용하여 지시를 내리듯이 미리 리스트를 정의해 두고 사용할 수 있게 되는 것입니다.
| 입력하는 문장(A열) | 자동으로 고쳐지는 문장(B열) |
|---|---|
| L1 | 아이오페 |
| L2 | 라네즈 |
| L3 | 마몽드 |
| L4 | 스템3 |
| L5 | 헤라 |
| L6 | 설화수 |
| L7 | 이니스프리 |
| L8 | 미로잎섬 |
| L9 | 베리떼 |
| L10 | 리리코스 |
Sub AddDataToAutoCorrect()
Dim shtSheet As Worksheet
Dim rngCell As Range
Dim intNum As Integer
Dim Msg As String
Set shtSheet = Worksheets("추가List")
intNum = shtSheet.Columns(1).SpecialCells(xlTextValues).Count
For Each rngCell In shtSheet.UsedRange.Columns(1).Cells
Application.AutoCorrect.AddReplacement rngCell, rngCell.Offset(0, 1)
'''추가List 시트의 첫번째 열에 있는 데이터들을 AddReplacement 메서드를 사용하여
'''추가를 해 줍니다.
Next rngCell
Msg = Msg & shtSheet.Name & "시트에 있는 " & vbCr
Msg = Msg & intNum & "개의 목록이 추가되었습니다"
MsgBox Msg, , "목록 추가 완료//By Exceller"
End Sub
추가List 시트의 첫번째 열에 있는 데이터들을 AddReplacement 메서드를 사용하여 추가를 해 줍니다.
Step 3: 추가한 목록 삭제하기
마지막으로… 이런 식으로 추가한 목록들을 삭제하는 방법에 대해서 살펴보도록 합니다.
Sub DeleteDataFromAutoCorrect()
Dim varList As Variant
Dim intNum As Integer
varList = Application.AutoCorrect.ReplacementList
For intNum = 1 To UBound(varList)
If Left(varList(intNum, 1), 1) = "L" Then
Application.AutoCorrect.DeleteReplacement varList(intNum, 1)
End If
Next intNum
End Sub
추가 목록을 삭제하는 코드는 전혀 어려운 부분이 없을 것입니다. 혹시 L로 시작되는 추가 목록을 이미 작성해 두신 분이 있을 경우를 대비하여 목록 삭제 코드는 버튼에 연결해 두지 않았습니다. 코드를 응용하여 사용하시기 바랍니다.
자동 고침 기능에 대해 생각나는 것은 이 정도로군요. 많이 응용해 보시고 다른 좋은 아이디어가 생각나시는 분은 알려주세요.
오늘은 여기까지… 즐거운 주말 되시기를…
정리 — 자동 고침 관리 핵심
| 구분 | 사용한 코드 | 역할 |
|---|---|---|
| 목록 읽기 | Application.AutoCorrect.ReplacementList | 등록된 목록을 2차원 배열로 반환 |
| 목록 추가 | AutoCorrect.AddReplacement 입력, 교체 | 자동 고침 항목 등록 |
| 목록 삭제 | AutoCorrect.DeleteReplacement 입력 | 자동 고침 항목 삭제 |
| 시트 존재 확인 | On Error Resume Next + Delete | 동일 이름 시트 제거 후 재생성 |
| 개수 세기 | SpecialCells(xlTextValues).Count | 추가할 목록 개수 |
자주 묻는 질문 (FAQ)
Q1. 자동 고침 목록은 어디에서 설정하나요?
도구 메뉴의 자동 고침 옵션에서 설정하며, 예를 들어 "아이"를 입력하면 긴 상품명이 자동으로 입력되도록 등록해 둘 수 있습니다.
Q2. VBA로 자동 고침 목록을 한꺼번에 추가할 수 있나요?
시트에 입력할 문장과 바뀔 문장을 정리해 두고 AutoCorrect.AddReplacement 메서드로 반복 등록하면 됩니다.
Q3. 추가한 목록을 삭제하려면 어떻게 하나요?
ReplacementList로 읽은 목록을 순환하면서 조건에 맞는 항목을 DeleteReplacement 메서드로 삭제합니다. 예제는 L로 시작하는 항목을 삭제합니다.
마치며
팀원들이 함께 사용하는 자동 고침 목록을 시트로 관리하면 마치 야구에서 감독이 선수들에게 사인을 주듯 약속된 입력을 빠르게 공유할 수 있습니다.