반응형
변수 선언
변수를 선언할 때 주의해야 할 것은
변수를 각각 따로 선언해야 한다는 것이다.
예를 들어 다음과 같이
3개의 변수를 한꺼번에 Long으로 선언하면
Dim x, y, z As Long
z 만 Long으로 선언하고, 나머지는 Long이 아닌 Variant로 선언하게 된다.
제대로 하려면
Dim x As Long, y As Long, z As Long
또는
Dim x As Long
Dim y As Long
Dim z As Long
이렇게 선언해야 된다.
참고로 dim x as long 으로 입력해도
자동으로 Dim x As Long 으로 바뀌게 되니
편하게 소문자로 입력하자.
변수의 다른 표시 방법
몇가지 변수 형식은 다른 방법으로 표시할 수 있는데
Integer는 %
Long은 &
Single은 !
Double은 #
Currency는 @
String은 $
이렇게 하나의 문자로 대신해서 표시할 수 있다.
Dim x%, y&, z#
이렇게 As 까지도 빼고 간단하게 사용할 수 있다.
이걸 외워서 사용해도 괜찮겠지만
평소에는 Integer, Long, Double을 쓰고
다른 사람이 작성한 코드에서 %, !, $ 이런 것이 나오면
이게 뭔지 이해할 수 있는 정도가 낫지않을까 싶다.
변수 선언을 안하면?
변수 선언을 안하면 기본적으로 Variant 형식으로 선언되어
실행에는 아무런 문제가 없으나 실행 속도에 차이가 난다.
다음 코드는 단순 사칙연산 계산을 아주 많이 반복하는 것인데
Sub TimeTest()
'변수 선언
Dim x As Long, y As Long
Dim a As Long, b As Long, c As Long
Dim i As Long, j As Long
Dim StartTime As Date, EndTime As Date
'시작 시간 저장
StartTime = Timer
'계산 실행
x = 0
y = 0
For i = 1 To 10000
x = x + 1
y = y + 1
For j = 1 To 10000
a = x + y + i
b = y - x - i
c = x / y * i
Next j
Next i
'종료 시간 저장
EndTime = Timer
'경과 시간 출력
MsgBox Format(EndTime - StartTime, "0.0" & " second")
End Sub
변수를 선언한 상태에서 실행하면 2.5 초가 걸린다.
변수 선언한 부분을 주석 처리해서 실행하면
Sub TimeTest()
'변수 선언
'Dim x As Long, y As Long
'Dim a As Long, b As Long, c As Long
'Dim i As Long, j As Long
'Dim StartTime As Date, EndTime As Date
'시작 시간 저장
StartTime = Timer
'계산 실행
x = 0
y = 0
For i = 1 To 10000
x = x + 1
y = y + 1
For j = 1 To 10000
a = x + y + i
b = y - x - i
c = x / y * i
Next j
Next i
'종료 시간 저장
EndTime = Timer
'경과 시간 출력
MsgBox Format(EndTime - StartTime, "0.0" & " second")
End Sub
변수 선언을 안하니까 똑같은 계산을 하는데 8초나 걸린다.
간단한 작업을 할 때는 큰 차이가 없지만
복잡한 작업을 할 때는 귀찮더라도 변수를 선언하는 것이 낫다.
반응형
'Excel VBA 기초' 카테고리의 다른 글
Excel VBA - For, Next (0) | 2023.12.02 |
---|---|
Excel VBA - VBA Editor 살펴보기 (2) (0) | 2023.11.30 |
Excel VBA - 변수 (1) (0) | 2023.11.30 |
Excel VBA - Cell 값을 다른 Cell에 복사하기 (0) | 2023.11.26 |
Excel VBA - Columns, Rows (0) | 2023.11.24 |