Computer >> 컴퓨터 >  >> 소프트웨어 >> Office

엑셀 VBA UsedRange 속성 활용법 총정리(4가지 방법)

이 글에서는 엑셀 VBAUsedRange 속성을 사용하는 방법을 소개합니다. 연속된 범위, 분산된 범위, 비활성 워크시트, 그리고 비활성 통합문서에 UsedRange 속성을 적용하는 네 가지 방법을 단계별로 알아보세요.

글을 읽으면서 직접 따라 해볼 수 있도록 실습용 통합문서를 다운로드해 두시면 좋습니다.

엑셀 VBA UsedRange 속성이란?

VBA의 UsedRange 속성은 Range 개체를 반환합니다. 이 속성은 워크시트에서 사용된 모든 셀로 구성된 범위를 반환하며, 시트 맨 앞의 빈 행까지 포함한다는 점이 특징입니다.

VBA 코드에서 UsedRange 속성은 반드시 워크시트 이름과 함께 사용해야 합니다. 현재 활성화된 워크시트에 UsedRange 속성을 적용할 때 일반적으로 사용되는 구문은 다음과 같습니다.

Dim Rng As Range
Set Rng = ActiveSheet.UsedRange

⧭ 참고 사항:

  • 여기서 Rng는 UsedRange 속성이 반환한 Range 개체를 담는 변수 이름일 뿐이므로, 원하는 이름으로 자유롭게 변경할 수 있습니다.
  • 활성화되지 않은 다른 워크시트에 UsedRange 속성을 사용하려면 ActiveSheet 대신 해당 워크시트의 이름을 지정하면 됩니다.

예를 들어 Sheet1이라는 워크시트에 적용하려면 다음과 같이 작성합니다.

Set Rng = Worksheets("Sheet1").UsedRange

엑셀 VBA UsedRange 속성 활용 4가지 방법

아래에서 VBA에서 UsedRange 속성을 가장 많이 활용하는 네 가지 방법을 살펴보겠습니다.

방법 1. 연속된 범위에 VBA UsedRange 속성 사용하기

먼저, 데이터가 빈틈없이 채워진 연속된 범위가 있는 워크시트에 UsedRange 속성을 적용해 보겠습니다. 이 경우 전체 범위가 반환되며, 맨 앞의 빈 행도 함께 포함됩니다.

예제의 Sheet1에는 한 회사 직원들의 이름, 입사일, 급여로 구성된 연속된 범위가 입력되어 있습니다.

이 워크시트에 UsedRange 속성을 사용하면 B2:C13 범위가 반환됩니다(맨 앞의 빈 행 포함).

Sheet1이 활성 상태라면 다음 코드를 사용할 수 있습니다.

Dim Rng As Range
Set Rng = ActiveSheet.UsedRange

또는 아래와 같이 시트 이름을 직접 지정할 수도 있습니다.

Dim Rng As Range
Set Rng = Worksheets("Sheet1").UsedRange

⧭ 실행 결과:

코드 안에서 Range 개체의 Select 메서드를 사용했기 때문에, 코드를 실행하면 Sheet1의 B2:D13 범위가 선택됩니다.

함께 읽으면 좋은 글: 엑셀 VBA Range 개체 사용법(5가지 속성)

방법 2. 분산된 범위에 VBA UsedRange 속성 사용하기

워크시트에 데이터가 흩어져 있는 경우, UsedRange 속성은 그 사이의 빈 셀까지 모두 포함한 범위를 반환합니다.

예를 들어 Sheet1에는 총급여, 최고 급여, 최저 급여 값이 B3부터 G3 사이 여러 곳에 나뉘어 입력되어 있다고 가정해 보겠습니다.

이때 위에서 설명한 두 가지 코드 중 하나를 사용해 UsedRange 속성을 적용합니다.

Dim Rng As Range
Set Rng = ActiveSheet.UsedRange

또는

Dim Rng As Range
Set Rng = Worksheets("Sheet1").UsedRange

⧭ 실행 결과:

Sheet1의 B2:G3 범위 내 모든 셀이 빈 셀을 포함하여 반환됩니다(맨 앞의 빈 행 포함). Select 메서드를 사용했기 때문에 결과적으로 B2:G3 범위가 선택됩니다.

함께 읽으면 좋은 글: 엑셀 VBA로 범위의 끝 찾기(예제 포함)

관련 자료

  • 엑셀 VBA로 다른 시트에 범위 복사하기(8가지 쉬운 방법)
  • 엑셀 VBA로 각 셀 순회하기(완벽 가이드)
  • 엑셀 VBA 첨자가 범위를 벗어났습니다 오류 해결법(5가지 솔루션)

방법 3. 비활성 워크시트에 VBA UsedRange 속성 사용하기

현재 활성화되어 있지 않은 워크시트에 UsedRange 속성을 적용하려면, 코드 앞부분에 해당 워크시트의 이름을 명시해야 합니다.

예를 들어 현재 활성 워크시트가 Sheet1이라고 가정해 보겠습니다. Sheet2에 UsedRange 속성을 사용하려면 다음과 같이 작성합니다.

Dim Rng As Range
Set Rng = Worksheets("Sheet2").UsedRange

이 코드를 실행하면 Sheet2에서 사용 중인 모든 셀이 선택됩니다.

함께 읽으면 좋은 글: 엑셀 VBA로 범위 설정하기(7가지 예제)

방법 4. 비활성 통합문서에 VBA UsedRange 속성 사용하기

UsedRange 속성은 열려 있지만 활성화되지 않은 통합문서에도 적용할 수 있습니다. 이 경우 코드 맨 앞에 통합문서 이름을 지정하면 됩니다.

예를 들어 현재 활성 통합문서가 Workbook1이라면, Workbook2Sheet1에 UsedRange 속성을 적용하려면 다음과 같이 작성합니다.

Dim Rng As Range
Set Rng = Workbooks("Workbook2.xlsm").Worksheets("Sheet1").UsedRange

이 코드는 Workbook2의 Sheet1에서 사용 중인 범위를 선택합니다.

함께 읽으면 좋은 글: 엑셀 VBA로 범위 내 각 셀 처리하기(3가지 방법)

알아두면 좋은 점

VBA의 UsedRange 속성은 항상 Range 개체를 반환합니다. 이 글에서는 시각적으로 결과를 확인하기 위해 Range 개체의 Select 메서드를 사용했지만, 목적에 따라 Value, Copy, Clear 등 Range 개체의 어떤 속성이나 메서드든 자유롭게 활용할 수 있습니다.

마무리

오늘 소개한 방법들을 활용하면 엑셀 VBA에서 UsedRange 속성을 다양한 상황에 맞게 사용할 수 있습니다. 궁금한 점이 있다면 언제든지 질문해 주세요.

관련 글

  • 엑셀 VBA 셀 값을 기준으로 범위 선택하기(7가지 방법)
  • 엑셀 VBA에서 열 번호 기준으로 범위 사용하기(4가지 방법)
  • 엑셀 VBA Range Offset 활용법(11가지 방법)
  • 엑셀 VBA 변수 행 번호로 범위 지정하기(4가지 예제)
  • 엑셀에서 텍스트 개수 세는 방법(7가지 쉬운 팁)