안녕하세요!! 지난 시간에 이어 오늘은 VBA의 기초 모듈 작성법을 배워볼 거예요.
먼저 말씀드렸다시피 모듈은 VBA의 가장 기본적인 공간이자, 여러분의 아이디어를 엑셀로 구현하는 무대라고 할 수 있습니다.
설명드리기에 앞서 VBA의 구동 방식에 대하여 간단하게 먼저 말씀드리겠습니다.
우리는 모듈에 문서를 작성할 거예요. 사전에 규칙 된 언어를 사용해서 작성할 겁니다. 그 문서를 실행시킬 때마다 컴퓨터는 가장 윗줄부터 차례로 읽어 내려가며 문서에 나와있는 내용 그대로 실행을 해줄 거예요. 만약 문서에 오류가 있다면 정상적으로 작동하지 않을 테고, 작성이 잘 된 문서라면 의도한 바를 그대로 실행해 줄 겁니다.
1. 규칙 한 언어로 (VBA 코드로)
2. 순서에 맞춰 (윗 줄부터 차례로)
3. 의도한 바를 결과물로 나타내주는
이러한 문서를 작성할 겁니다.
문서를 작성하기 위한 기초부터 아래에 차례로 설명드리려고 합니다.
오늘은 변수와 셀 다루 기라는 기초부터 한번 알아보도록 하겠습니다.
[목차]
1. 변수 : 데이터를 담는 그릇
2. 셀 다루기 : 셀지정, 값 입력, 가져오기, 복사까지!
3. 마무리
1. 변수 : 데이터를 담는 그릇
변수는 VBA에서 데이터를 저장하고 다룰 때 꼭 필요한 도구입니다. 이를 잘 이해하고 활용해야 효율적인 코드를 작성할 수 있어요.
우리가 말할거나 글을 작성할 때, 대상을 지칭하는 경우 어떤 말을 쓰나요?
'그 녀석이 말이야' / '이 물건은 좋아' / '저분이 사시는 겁니다' 등등..
위에서 대상을 나타내주는 말들이 있죠?
우리는 VBA에서 각종 데이터를 두고 작업을 할 거예요. 이러한 데이터를 지칭해 주는 말들이 있어야 하고 그걸 변수라고 생각하시면 쉽습니다. 말 그대로 데이터를 담는 그릇이 되는 거죠.
1) 변수의 속성 : 데이터를 담는 맞춤형 그릇
변수는 데이터를 임시로 저장해 두는 그릇이에요. 하지만 모든 변수가 같은 그릇은 아닙니다. 저장하려는 데이터의 종류에 맞는 변수를 골라야 해요. 물론 아래 말씀드린 것보다 다양하게 존재하지만, 앞으로 사용하시면서 필요할 때 알아가셔도 충분합니다.
Integer : 정수 (1,2,100 등)를 저장
String : 문자 ("안녕하세요", "VBA")를 저장
Double : 소수점이 포함된 숫자 (3.14, 100.5)를 저장
Boolean : 참(True)과 거짓(False)을 저장
Variant : 데이터 타입 미지정 (이것만 써도 편하지만, 목적에 따라 변수타입을 명확히 해주는 것이 좋습니다.)
2) 변수 선언과 값 대입 : 이렇게 간단합니다.
변수는 보통 문서의 앞단에 미리 선언합니다. 변수를 선언하는 키워드는 Dim이에요. 아래 예제를 함께 살펴볼게요.
Sub aa()
Dim A as integer 'A라는 변수를 정수로 선언
Dim B as string 'B라는 변수를 문자로 선언
' 작은따옴표 뒤에 메모를 간단히 적을 수 있습니다. 이러한 주석 표시는 코드 실행에 영향을 미치지 않습니다.
A=50 'A라는 변수에 50을 대입 (숫자는 그냥 입력)
B="만세다 만세!!" 'B라는 변수에 텍스트를 대입 (텍스트는 따옴표(") 내지는 작은따옴표(')로 묶어서 표시)
msgbox ("숫자는" & A & "텍스트는" & B)
End Sub
문서의 가장 첫 줄은 모듈의 시작을 의미하는 Sub이라는 명령어로 시작합니다. 반대로 가장 마지막 단은 End sub이고요.
각각 A/B라는 변수를 만들어서 어떤 데이터를 지칭할 건지를 정해줬고요. 다음단에 데이터를 대입해 줬습니다.
마지막 Msgbox라는 명령어는 메시지박스가 뜨도록 하는 창인데요.
괄호 안의 내용을 출력해 주는 명령어입니다. 괄호 안에 따옴표로 묶어준 내용은 텍스트로 인식하여 표현해 주고, 변수는 그대로 적어주시면 변수로 인식하여 나타내줍니다. 각 요소를 [&] 문자를 사용하여 연결 지어 주면 연달아 표시할 수 있고요.
결괏값 : 숫자는 50 텍스트는 만세다 만세!!
tip : 변수 이름은 간단하면서 직관적으로 적어야 나중에 관리하기 편합니다. (하지만 초보입장에서는 간단하게 적을수록 편하더라고요. 저도 그래서 보통 a, b, c로 적는 편입니다.)
사실 요새는 변수지정 없이도 문서작성이 가능하긴 한데, 문서가 길어지면 변수관리가 중요해지니 꼭 문서 앞단에 정리해 두시는 습관을 들이시는 게 좋아요.
2. 셀 다루기 : 셀 지정, 값 입력, 가져오기, 복사까지!!
엑셀 VBA의 진가는 바로 셀을 자유자재로 다룰 수 있다는 점이에요. 셀을 지정하고 값을 넣거나 가져오고, 복사/붙여 넣기까지 해 볼게요.
1) 셀 지정하기 : 다양한 방법들
셀을 다루려면 먼저 셀을 지정해야겠죠? VBA에서는 아래처럼 Range와 Cells를 사용해서 셀을 지정합니다.
Range 객체 : 셀 주소를 직접 입력
Range("A1").Value = "안녕하세요 " 'A1 셀 지정하여 값을 대입
Range("B1:B3"). Value =" 범위설정 " 'B1:B3 범위 지정하여 값 대입
' value는 값을 뜻합니다. 셀주소 뒤에 마침표(.) 속성을 넣으면 명령을 좀 더 구체적으로 할 수 있어요.
' 위 예제에서 Value를 빼고 적어도 똑같은 결과를 나타내긴 합니다.
Cell 객체 : 행과 열 번호로 셀 지정
(Range와 유사합니다. 알파벳 대신 숫자로 치환하였고요. Range에서는 행이 먼저 나오는데, Cells에서는 열을 먼저 적어줍니다.)
Cells(1,1). Value = "첫 번째 셀" 'A1셀 지정하여 값 대입
Cells(2,3). Value ="여기는 c2" 'C2 셀 지정하여 값 대입
Workbook / Worksheet 객체 : 워크북과 시트를 지정해 줄 수도 있습니다.
Workbooks("새문서"). Worksheets("Sheet1"). Range("A1"). Value = 100
' 새면서라는 워크북의 sheet1이라는 시트의 a1셀에 100을 대입
tip : Range는 주소로, Cells는 숫자로 지정한다는 점!!
2) 셀 값 가져오기 : 셀 내용을 변수로 활용하기
다른 셀의 값을 읽어와서 변수에 저장할 수 있습니다.
Sub aa()
Dim a as string
a= Range("a1"). value 'A1셀의 값을 a에 저장
msgbox (a) 'a 변수에 저장된 A1셀의 데이터를 출력
End Sub
Tip : 변수의 타입과 실제 데이터의 타입을 맞춰서 가져와야 합니다. Integer(정수)로 변수를 만들었는데 텍스트를 매칭시키면 오류가 발생해요.
3) 범위 복사/붙여 넣기 : 손이 가는 작업은 이제 안녕
VBA를 사용하면서 가장 많이 사용하는 기능이 아닐까 싶습니다. 바로 복붙입니다.
Sub aa()
Range("a1:a3"). copy 'a1부터 a3까지를 복사
Range("b1"). PasteSpecial 'b1셀을 기준으로 해당내용올 붙여 넣기
Application.CutCopyMode = False '복사모드 해제( 이건 그냥 참고용입니다 안 쓰셔도 무방)
End Sub
Tip : 붙여 넣기는 다양한 방식으로 가능합니다. 값복사/수식복사/서식복사 등 세밀하게도 설정이 가능합니다. 이건 좀 더 익숙해지면 사용해 보도록 하세요.
Tip2 : 셀 범위지정을 Range로만 표시하고 있는데요, 실제 코드를 자다 보면 Cells를 사용하는 게 편한 경우가 많습니다. 숫자로만 이루어져 있기 때문에 구문을 작성하기 편리하기 때문이죠. 이럴 때는 아래처럼 사용해 보세요.
Range(Cells(1,1), Cells(1,3)). select 'A1에서 C1까지의 범위를 선택(select)
Range(Cells(2,1), Cells(5,3)). copy 'A2에서 C5까지의 범위를 복사(copy)
복잡한 작업을 하기 위해서는 Cells에 익숙해지는 것이 좋습니다.
3. 마무리하며
오늘은 변수와 셀에 대해서 알아봤는데요. 변수에서는 String, Integer, Variant 정도를 가져가시면 되고, Range/Cells를 통해 셀을 지정하는 방법정도 알아가시면 좋지 않을까 싶네요. 아무래도 직접 작성을 해보시는 편이 좋을 것 같아 예시파일은 따로 올리지 않았습니다. 길지 않으니 직접 작성해 보시는 게 도움이 될 거예요.
다음에는 조건문과 반복문에 대해 알아보려고 합니다. 모든 코딩언어의 핵심이 아닐까 싶네요.
'생활속 소소한 팁' 카테고리의 다른 글
엑셀 VBA, 어렵지 않아요! 첫 번째 이야기: VBA 시작과 필수 개념 익히기 (2) | 2024.11.12 |
---|---|
엑셀 값복사 쉽게 하기 ( 검색어 기반 vba 매크로 자동 값복사 ) (3) | 2024.11.06 |
현재 셀 위치 표시, 셀 보호하기(셀 잠금, 수식 보호) 관련 매크로 (0) | 2024.06.28 |
[VBA 연습] 셀 안에 특정 문자 개수 세기 ( 단일셀 / 범위셀 ) (0) | 2023.12.01 |
연말정산 관련 세법 개정 사항 (2023년 귀속) (0) | 2023.11.30 |