[VB] Range 변수 선언, 지정 및 예제 총정리

엑셀에서 VBA 를 이용해 작업할 때, VBA 에서 Range 형식의 변수를 만들어 시트의 여러 데이터를 담아 사용하면 확실히 편리합니다. 오랜만에 Range 변수를 사용하게 되었는데 기억이 잘 나지 않아 다시 한번 정리합니다.

시작하기 전에  VB 에서의 변수 선언이 잘 기억나지 않는다면 아래 포스트를 먼저 참고 하시기 바랍니다.

Range

변수를 Range 형식으로 지정하면 해당 변수에 엑셀 시트의 셀 하나, 혹은 셀 범위를 담아 놓을 수 있습니다. 

Range 형식의 변수에 셀 범위를 담게 되면 for 문을 이용해 해당 변수의 여러 데이터에 접근하는 것도 가능합니다.

선언

Range 형식의 변수를 지정하는 방법은 다른 변수를 지정 하는 것과 크게 다르지 않습니다.

Dim rng_Price as Range

범위 지정

이제 지정된 Range 형식의 변수에 시트의 특정 범위를 담아 봅시다.

Set rng_Price = Sheet1.Range("A1")
Set rng_Price = Sheet1.Range("A2:A100")

위 예제처럼 시트의 특정 셀(A1)을 담거나 범위(A2:A100)를 담을 수 있습니다.

여기서 주의할 점은 보통의 변수에 특정 값을 담을 때와는 달리 Range 형식에 특정 범위를 담기 위해서는 앞에 Set 문을 반드시 써주어야 한다는 것입니다. 그 이유는 아래 예제에서 확인 할 수 있습니다.

예제

범위에 값 출력

아래는 Range 형식의 변수에 특정 범위를 담고, 해당 범위에 특정 값을 출력하는 예제입니다.

Public Function Print_1()
Dim rng as Range
Set rng = Sheet1.Range("A1:A10")
rng = 1
End Function

위 함수에서 Range 형식의 변수에 범위를 지정할 때 왜 Set 문을 사용해야 하는지 알 수 있습니다. Set 문을 사용하면 Range 형식의 변수에 특정 범위를 지정 할 수 있으며, Set 없이 Range 형식에 특정 값을 넣으면(범위가 지정된 상태에서) 해당 범위에 지정한 값이 출력 됩니다.

for 문 이용하기

for 문에서 Range 형식의 변수를 이용 하는 방법을 알아봅시다. 예제 먼저 갑니다.

Public Function Print_i()

Dim rng as Range
Dim i as Double

Set rng = Sheet1.Range("A1:A10")

For i = 1 To 10
rng(i, 1) = i
Next i

End Function

위 코드가 어떤 작업을 하는지 문치 채셨나요?

rng 라는 Range 형식의 변수를 Sheet1 의 A1 부터 A10 까지 범위로 지정하고, for 문을 이용해 rng 의 1행 부터 10 행까지의 셀에 i 의 값을 투입하는 것입니다.


시트의 특정 범위를 코드상에서 Range 형식으로 지정해 놓으면 셀을 위치를 변경한다거나 해도 간단하게 타깃을 변경 할 수 있어, 이름 관리자를 이용해 범위를 지정하는 것 보다 조금더 간단할 수도 있습니다.

이상 Range 형식의 변수를 선언하고, 범위를 지정하고, 사용하는 방법을 알아 보았습니다.