<엑셀VBA 입문 0.1강> 변수
블로그를 읽다가 흥미로운 질문을 봤다.
당장 엑셀 VBA를 이용해서 어떤 웹사이트의 내용을 긁어오거나(파싱), 오토마우스로 다른 어플리케이션을 조작하는 방법을 알고 싶다는 분이 계셨다.
어설프나마 필자는 그런 것을 할 수 있다. 무엇보다 바로 그런 것을 가르쳐주고 싶어서 이 강좌를 쓰고 있다.
하지만 지금은 때가 아니다. 기초를 먼저 쌓아야 한다. 그런 의미에서 아주 기본적인 것을 한 번 짚고 넘어가야 한다는 생각에 이 글을 쓴다.
———-
변수
변수란 무엇인가?
변수는 값을 담는 일종의 상자라고 할 수 있다. 변수를 가장 쉽게 이해할 수 있는 설명이다.
변수의 원래 뜻은 <변하는 값>이라는 뜻이지만, 그냥 값을 담는 상자/그릇이라고 생각하자.
예를 들어 a라는 변수(상자)가 있다고 해보자. 이 상자를 사용하기 위해서는 <선언>이라는게 필요하다.
VBA에서는, 변수를 사용하기 위해서 Dim 이라는 명령어로 변수를 <선언>한다.
예를 들어 a 라는 이름의 변수를 쓰고 싶다면,
Dim a
라고 쓴다.
이를 <변수의 선언>이라고 한다. 사용한다고 알리는 것이다.
(물론 VBA의 변수는 선언하지 않아도 사용 가능하다.
그래도 가급적 모든 변수는 선언해주는게 좋다.)
이 a라는 변수에 0 이라는 값을 담아보자.
a = 0
이라고 쓰면 a라는 상자에 0 이라는 값을 넣는 것이다.
변수명 오른쪽에 붙는 등호(=)는 프로그래밍에서 좌측 화살표(←)로 이해하는 것이 좋다.
변수명=값 은, 곧 변수명←값 과 같다.
변수에 값을 담는 것이다. 이를 <변수의 대입>이라고 부른다.
Dim a
a = 0
이라고 하면 이제 a의 값은 0 이다.
Dim a
Dim b
Dim c
a = 2
b = 3
c = a + b
이라고 하면 c의 값은 어떻게 될까?
5가 된다.
(c = a + b 는 사실상 c ← 2 + 3 이라는 의미이기 때문)
만약
Dim a
a = 10
a = a + 3
이라고 하면 어떨까?
결과적으로 a의 값은 13이 된다.
위에서 언급했듯 등호(=)는 <같다>라는 뜻이기보다 <대입>을 의미한다.
기존 a값인 10 에 3 을 더한 13 이 된다.
VBA 변수는 문자열 결합도 가능하다.
문자열 결합은 앤드<&>기호를 사용한다.
이런 식이다.
Dim aa
Dim bb
aa = “문자”
bb = “열”
cc = aa & bb
이 경우 cc의 값은 “문자열”이 된다.
숫자에 문자를 결합할 때도 마찬가지로 앤드<&>기호를 쓴다. 더하기<+>기호는 오직 숫자끼리 더할 때만 사용한다.
Dim a
Dim b
Dim c
Dim d
a = 1
b = “문자열”
c = a & b
d = b & a
c의 값은 “1문자열”이 되고,
d의 값은 “문자열1″이 된다.
정리하면 아래와 같다.
1. VBA 변수의 선언
Dim 변수명
ex) Dim a
2. VBA 변수의 대입
변수명 = 값
ex) a = 100
ex2) b = “문자열”
3. VBA 숫자 변수의 사칙연산
덧셈 : result = a + 5
뺄셈 : result = a – 5
곱셈 : result = a * 5
나누기 : result = a / 5
나머지 구하기 : result = a Mod 5
4. VBA 문자열 변수의 결합
결과변수 = 문자열변수 & 문자열변수
또는
결과변수 = 숫자변수 & 문자열변수
또는
결과변수 = 문자열변수 & 숫자변수
만약 숫자변수 2개 이상을 문자열처럼 결합하고 싶다면
결과변수 = 숫자변수 & “” & 숫자변수
이렇게 쓰면 된다.
ex) c = a & “” & b