- 최초 작성일: 2003-04-02
- 최종 수정일: 2026-09-30
- 조회수: 16 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 수식이 입력된 셀에 수식을 메모로 달기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
To teach is to learn twice over. 가르치는 것은 곧 두 번 이상을 배우는 것이다.
무엇을 배우는 가장 좋은 방법은 남을 가르쳐 보는 것이랍니다. 답변신공 흠...
수식이 입력된 셀에 수식을 메모로 달기
핵심 요약: 수식을 메모로 삽입하기
HasFormula로 수식이 있는 셀을 찾아 AddComment로 수식 문자열을 메모에 넣는 방법입니다. 시트의 계산 구조를 문서화할 때 유용합니다.
- 1단계: Application.InputBox(Type:=8)로 대상 영역을 지정받습니다.
- 2단계: DelComments로 기존 메모를 삭제합니다.
- 3단계: HasFormula가 True인 셀에 AddComment로 Formula를 삽입합니다.
Step 1: 무엇을 만들까요?
사업본부별, 월별 매출을 정리한 표가 있습니다. 이 표에서 분기계, 지점계 부분에는 수식이 입력되어 있습니다. 수식이 입력된 셀의 수식을 메모(주석)로 삽입해 보겠습니다.
버튼을 누르고 대상 영역을 지정하면, 영역 안에서 수식이 들어 있는 모든 셀에 메모가 삽입되면서 수식이 그대로 옮겨집니다.
Step 2: 코드 살펴보기
Sub AddFomulaToComment()
Const strID As String = "www.iExceller.com"
Dim rngCell As Range
Dim rngTarget As Range
Set rngTarget = Application.InputBox(prompt:="대상 영역을 선택하세요", _
Type:=8, Default:=[Start].CurrentRegion.Address)
' 사용자로부터 영역을 지정받습니다.
MsgBox "먼저, 지정하신 영역 내의 메모를 모두 지웁니다", , strID
DelComments rngTarget
' 지정된 영역 내에 메모가 이미 들어있다면 이를 지우기 위한 외부 프로시저를 실행시킵니다.
' 이 때 rngTarget, 즉 사용자가 지정한 영역을 함께 변수로 넘겨 실행합니다.
MsgBox "메모를 모두 제거하였습니다. 이제 수식을 메모로 옮깁니다", , strID
For Each rngCell In rngTarget
With rngCell
If .HasFormula Then
' 셀에 수식이 들어있으면 AddComment 메서드를 사용하여 메모를 삽입합니다.
' 메모에 텍스트를 추가할 때에는 Text 메서드를 사용합니다.
.AddComment Text:=.Formula
End If
End With
Next rngCell
MsgBox "수식이 들어있는 모든 셀에 메모를 삽입하였습니다", , strID
End Sub
먼저 Application.InputBox의 Type을 8로 지정해 대상 영역을 입력받고, 이미 들어 있는 메모를 지운 다음 영역의 각 셀을 순환하면서 HasFormula 속성으로 수식 여부를 확인합니다. 수식이 있는 셀에는 AddComment 메서드로 메모를 만들고 .Formula를 메모 내용으로 넣습니다.
기존 메모를 지우는 외부 프로시저 DelComments는 다음과 같이 작성할 수 있습니다. 대상 영역을 인수로 받아 메모가 있는 셀의 메모를 삭제합니다.
Sub DelComments(rngTarget As Range)
Dim rngCell As Range
For Each rngCell In rngTarget
If Not rngCell.Comment Is Nothing Then rngCell.Comment.Delete
Next rngCell
End Sub
많이들 응용해 보세요!
다음 시간에 또…
정리 — 수식 메모 삽입 핵심 코드
| 구분 | 사용한 코드 | 역할 |
|---|---|---|
| 영역 입력 | Application.InputBox(..., Type:=8) | 대상 영역 선택 |
| 수식 여부 | .HasFormula | 수식이 있는 셀 판별 |
| 메모 삽입 | .AddComment Text:=.Formula | 수식을 메모로 추가 |
| 메모 삭제 | rngCell.Comment.Delete | 기존 메모 제거 |
| 프로시저 호출 | DelComments rngTarget | 영역을 인수로 전달 |
자주 묻는 질문 (FAQ)
Q1. 셀에 수식이 있는지는 어떻게 확인하나요?
Range 개체의 HasFormula 속성이 True이면 수식이 들어 있는 셀입니다.
Q2. 메모를 추가하는 메서드는 무엇인가요?
AddComment 메서드입니다. Text 인수에 메모에 넣을 내용을 지정합니다.
Q3. 기존 메모가 있는 셀에 AddComment를 실행하면 어떻게 되나요?
이미 메모가 있는 셀에는 오류가 발생하므로 먼저 기존 메모를 삭제하는 절차를 넣었습니다.
마치며
수식을 메모로 남겨 두면 복잡한 표의 계산 구조를 한눈에 확인할 수 있습니다. 다양하게 응용해 보시기 바랍니다.