[엑셀 VBA] Naming Convention - 변수나 개체 이름 붙이는 관행
작성자
dra****
작성일
2021-06-14 14:14
조회
2331
자신만 보는 코드면 별 문제가 없지만 협업을 해야 하거나 다른 사람들이 그 코드를 분석해야 한다면, 변수들이 무엇을 의미하는지 명확하게 전달하는 것이 중요합니다. 가뜩이나 분석하기 힘든데, 가독성 마저 좋지 않다면 ... ㅠㅠ
코딩을 보다 보면 Naming Convention을 한 번도 본적이 없는 분이 많다는 것을 느끼네요.
가령 누군가가 a = Range("a3") 라해 코딩했다고 가정해 보겠습니다. a는 개체를 받는 변수일까요 아니면 값을 받는 변수 일까요? 당연히 "Set" 구문이 없으니 변수를 받는 것입니다. 그럼 a=Range("a3").Value 라고 명기를 하면 이해하기가 좀 더 쉬어 질것입니다. 이제 a값은 도대체 무슨 용도일까요? 언급한 것 처럼 혼자만 보는 코드면 상관없습니다. 다른 사람에게 전달할 때 이해하기 어려운 것이지요.
모든 변수와 개체에는 변수명을 붙이는관행이 있습니다. 이렇게 하면 서로 무엇을 의미하는 지 쉽게 알 수 있으니까요.
가령 Command Button을 폼에 두고 이름을 명명할 때 "btn" + "이름(CamelCase)" 방식으로 합니다. 꼭 그래야 한다는 법은 없습니다. 그래서 "btnLogin" 이런식으로 명명하면 이게 무엇을 의미하는지 쉽게 알 수 있겠지요.
아래 표를 보시면 일반적으로 사용하는 명명 방식입니다.
Command button | cmd | cmdSubmit |
Button | btn | btnCancel |
Combo Box | cbo | cboSubjects |
CheckBox | cb | cbHobbies |
List Box | lst | lstMonths |
Text Box | txt | txtName |
Scroll Bar | scr | scrStudentInfo |
Spin Button | spn | spnDay |
Option Button | opt | optGender |
Label | lbl blStuName | |
Image | img | imgPhoto |
Toggle Button | tgl | tglMode |
UserForm | fm | frmLogin |
Frame | fra | fraAddress |
Tabstrip | tbs | tbsTeachers |
Multipage | mup | mupEmployee |
사실 이보다 많이 있습니다. VBA에 관심 있는 분들은 "VBA Naming Convention"으로 검색해 보면 참고가 될 것입니다.
전체 165
번호 | 제목 | 작성자 | 작성일 | 추천 | 조회 |
[📚진짜쓰는 실무엑셀] IT/오피스 '1위' 베스트셀러! 엑셀 공부, 이 교재로 마스터하세요! (315)
![]() ![]() |
![]() ![]() |
2022.02.03 | 575 | 609847 | |
78094 |
[M365] 수식으로 고급필터 구현하기
![]() ![]() |
![]() |
2025.04.11 | 1 | 138 |
78009 |
LOOKUP을 XLOOKUP 처럼 사용 (2019 이하 필독)
![]() ![]() |
![]() |
2025.04.06 | - | 133 |
78002 |
[VBA] 괄호가 대응되게 문자열 잘라주는 함수
![]() |
![]() |
2025.04.05 | - | 74 |
77792 |
엑셀 그림 삽입이 안될 때.. (그림 삽입 비활성화 해결)
(1)
![]() ![]() |
![]() ![]() |
2025.03.24 | 2 | 455 |
77667 |
언피벗 툴 업그레이드 버전입니다.
![]() ![]() |
![]() |
2025.03.17 | - | 121 |
77635 |
머리글로 데이터 합치기 툴
![]() ![]() |
![]() |
2025.03.15 | 1 | 132 |
77598 |
MERGE(자석처럼 자료 붙이기) 툴입니다.
![]() ![]() |
![]() |
2025.03.13 | - | 173 |
77577 |
[VBA] 시트명들 가져오는 함수
![]() ![]() |
![]() |
2025.03.12 | 1 | 136 |
77544 |
LOOKUP 함수 사용법(2019 이하 필독)
![]() ![]() |
![]() |
2025.03.11 | - | 211 |
77543 |
[함수TIP] Date함수로 Eomonth함수 대체하기
(3)
![]() |
![]() |
2025.03.11 | 3 | 90 |
77481 |
쉽게 쓸 수 있는 언피벗 툴
![]() ![]() |
![]() |
2025.03.08 | 2 | 137 |
77468 |
월간단위 월주차 함수
![]() ![]() ![]() |
![]() ![]() |
2025.03.07 | - | 160 |
77385 |
TEXTJOIN 을 SUMPRODUCT 공식으로 2차원 데이터 다루기
![]() ![]() |
![]() |
2025.03.04 | - | 110 |
77355 |
TEXTJOIN 으로 2차원 데이터 다루기
![]() ![]() |
![]() |
2025.03.02 | 1 | 115 |
77353 |
& 기호로 SUMPRODUCT 2차원 데이터 다루기
![]() ![]() |
![]() |
2025.03.02 | - | 90 |
77351 |
단어 포함 여부 검색, 원하는 단어로 출력
![]() ![]() |
![]() |
2025.03.02 | 1 | 122 |
77238 |
휴일이면 1 아니면 0이 나오는 함수
![]() ![]() |
![]() |
2025.02.24 | - | 161 |
77072 |
SUMPRODUCT로 VLOOKUP 대체 (2차원 룩업 가능)
![]() ![]() |
![]() |
2025.02.16 | - | 278 |
76915 |
SUMPRODUCT로 2차원 데이터 다루기[응용]
![]() ![]() |
![]() |
2025.02.09 | 1 | 243 |
76913 |
SUMPRODUCT로 2차원 데이터 sumifs 처럼 다루기
![]() ![]() |
![]() |
2025.02.09 | - | 204 |
@dra**** 님 맞습니다 ㅎㅎ 변수를 잘 설정해야 1년, 2년 한~참 지나서도 쉽게 쉽게 디버깅할 수 있죠..
하지만 제 경험으로는 이러한 개체단위 보다도 설명하는 단어 선정이 더 중요한 것 같습니다 ㅎ 예를들어 가격은 cost, 금액은 price .. 이런건 쉽지만, 인건비? 고정비? 유동비? 교통비? 통신비? 이런식으로 단계가 내려가면.. 설명하는 약어나 용어를 어떻게 선정하는가에 따라 코드 작성 난이도가 드롸마틱하게 바뀌는 듯 합니다..ㅎㅎ
그래서 코딩을 하다보면.. 자연스럽게 영어 어휘력도 조금씩 느는 것 같아요 ㅋㅋ
@더블유에이 님 그렇지요. ㅎㅎㅎ 작명하는 거랑 비슷해요. 고민하면서 지어야 하니.
한글변수나 경로는 가급적 사용 안하는 것이. 영어 엑셀 VBA에서는 인식을 못합니다.
@dra**** 님 좋은 정보 감사합니다😄
@dra**** 님 좋은 정보 감사드립니다.
@dra**** 님 좋은 정보 감사합니다.
@dra**** 님 유지보수를 위해 꼭 필요함을 깨닫습니다. 유념하겠습니다.
@dra**** 님 저도 처음부터 이걸 알았어야하는데,
체계적으로 배우지 않아서, 마구잡이로 이름지었다가 한참후에야 깨달았습니다^^
@dra**** 님 감사합니다. 제게 참 도움이 되는 글이었습니다! 유지보수 하는 팁도 같이 배우고 싶네요 😃
@승이 님 가급적 유지보수하는 상황을 안 만들게 코딩하는 것이 중요하지 않을 까요?
가령 For i = 1 to 10 ~ next i. 이런 상황에서, 어떤 연유로 10의 값이 변경이 되어질 수도 있다고 하면, 이런 코딩법은 좋지 않다고 봅니다.
동적으로 상황에 따라 변하는 값을 가져오는 코딩이 좋은 코딩입니다. 어지간하면 유지보수 할 일이 없어지니까요.
대표적인 것이 마지막 행번호 가져오는 Cells(Rows.Count, "A").End(xlUp) 이런 것을 사용하는 것이 좋은 코딩인 것이지요.
어떤 분들은 Rows.Count 자리에 숫자로 10000, 이런식으로 넣는데, 뭐 데이터가 얼마 안돼면 문제가 안 되겠지만 좋은 코딩법은 아닙니다. 참고로 엑셀이 32비트, 64비트이냐에 따라, 그리고 버전별로 Rows.Count의 값이 다를 수 있습니다.