엑셀 VBA CurrentRegion 속성 기존 데이터 영역에 연속해서 데이터 추가하는 프로시저

반응형

컴활 1급 엑셀 기출 문제 중에는 기존 데이터 영역에 연속해서 데이터를 추가하는 프로시저를 작성하라는 문제가 나옵니다. 기존 데이터 영역 마지막 행 다음에 연속해서 데이터를 추가하기 위해서는 기존 데이터 마지막 다음 행 행번호를 찾고 연속 추가 시 다음 행번호를 계속 증가시켜 연속적으로 입력되게 하는 식이 요구됩니다. 기출 문제집 답안에서는 CurrentRegion 속성을 사용하는 식을 제시하고 있습니다.

엑셀 VBA Currentregion

 

CurrentRegion 속성(property)

  • CurrentRegion은 현재 선택돼 있는 셀(active cell)이 포함돼 있거나 현재 셀에 연속된 “데이터가 입력돼 있으며 주변 행과 열이 모두 빈 셀로 채워져 있는 현재 영역”을 말합니다.
  • CurrentRegion 속성은 엑셀 개체 중 가장 기본적이고 많이 사용하는 Ranege 개체(object) 속성 중 하나이며 Rage object를 반환합니다.
  • 이 속성은 현재 영역 전체를 포함하도록 선택 영역을 자동으로 확장하는 많은 작업에 유용합니다.

기존 데이터가 있는 영역에 연속해서 데이터를 추가하는 Vba 프로시저 작성하려면 CurrentRegion 속성을 사용하면 되겠습니다.

본 속성은 보호된 워크시트에서는 사용할 수 없다고 돼있네요.

참고: 마이크로소프트 엑셀 도움말 페이지

 

 

CurrentRegion 선택

 

excel sheet


 

엑셀 단축키-Ctrl+Shift+별표( * ) : 활성 셀 주위의 현재 영역을 선택하거나 전체 피벗 테이블 보고서를 선택합니다

  • 위의 표에서 붉은색 테두리([B2:G4]) 내의 임의의 셀을 선택 클릭하고 위의 문구에서 소개한 단축키 Ctrl+Shift를+별표( * )를 누르면 붉은 색 테두리 안의 셀 영역이 배경색이 반전됩니다.
  • 이 [B2:E4] 영역이 CurrentRegion입니다.

currentregion

 

위의 표 이미지는 vba 코드로 [B2]셀의 CurrentRegion을 선택(Select)하고 본 영역의 행수(Rows), 열수(Columns)를 MsgBox로 출력한 결과입니다. 본 영역 범위는 표 이미지에서 보듯 행수(Rows)는 3, 열수(Columns)는 4입니다.

 
Sub currentregion_size() 
ActiveCell.currentregion.Select 
a = ActiveCell.currentregion.Rows.Count 
b = ActiveCell.currentregion.Columns.Count 
MsgBox "Rows: " & a & vbNewLine & _ 
"Columns: " & b 
End Sub 

 

MsgBox 구문중 vbNewLine은 개행문자(new Line)의 vba 상수입니다.

 

데이터가 추가된 CurrentRegion

본 영역의 마지막 행 다음 하나의 행에 데이터를 추가하면 CurrentRegion은 한 행만큼 확장됩니다.(열에 데이터를 추가하면 열이 확장되겠지요.)

 

데이터 추가 시트

 

한행의 데이터가 추가되고 선택 반전된 CurrentRegion입니다. 한행 만큼 영역이 확장됐습니다.

 

 

데이터 추가 VBA 코드

 

VBA 코드로 데이터를 추가하려면 CurrentRegion의 다음행 번호를 구해야합니다.

 

CurrentRegion 행수 구하기

CurrentRegion 행수를 구하는 식은 Rows 속성과 Count 속성을 사용해서 Range(참조셀).CurrentRegion.Rows.Count로 쓸 수 있습니다. 원하는 CurrentRegion을 설정하려면CurrentRegion 내의 임의의 셀을 참조셀로 정하면 되는데 보기쉽게 CurrentRegion 좌측 상단 셀(B2)을 참조셀로 설정하면 다음행을 구하는 식은

  • Range(“B2”).CurrentRegion.Rows.Count 또는
  • [B2].CurrentRegion.Rows.Count 가 됩니다.

데이터 추가 전 Rows.Count값은 3입니다. 추가될 다음행은 5번째 행이므로 2가 플러스되야 합니다.

  • CurrentRegion 첫행 번호 2를 플러스하여
    입력행 = [B2].CurrentRegion.Rows.Count + 2로 쓸 수 있는데
  • 기출 문제집 답안에 보면 보통
    입력행 = [B2]. Row + [B2].CurrentRegion.Rows.Count로 작성하고 있습니다.

  • [B2]. Row는 B2셀의 행 번호니까 2입니다.

VBA 코드 작성

아래는 위에서 기술한 CurrentRegion 속성을 이용해 직성한 간단한 데이터 추가 VBA 코드입니다.

Sub dataadd() 
erow = [B2].Row + [B2].currentregion.Rows.Count 
Cells(erow, 2) = "a112" 
Cells(erow, 3) = "키보드" 
Cells(erow, 4) = 1 
Cells(erow, 5) = 15000
[B2].CurrentRegion.Select
a = [B2].CurrentRegion.Rows.Count
b = [B2].CurrentRegion.Columns.Count
MsgBox "Rows:  " & a & vbNewLine & _
       "Columns:   " & b
End Sub

위 코드 중 회색 부분은 변경된 CurrentRegion 사이즈를 알아보기 위해 MsgBox로 출력하기 위해 삽입한 코드입니다. 실제 코드 구문에는 필요 없습니다.

한행 추가 결과 이미지입니다. Row가 1만큼 증가됐습니다.

확장 currentregion

주변 선택 셀 위치에 따른 CurrentRegion

셀별 현재영역

 

위의 표 이미지에서 본 글에서 선택한 CurrentRegion(편의상 이하 주영역으로 표기) 주변의 행과 열의 셀은 빈 셀입니다. 표시된 숫자는 구분을 위해 이미지상에 덧 붙인 숫자입니다. 노란색 영역의 셀은 인접한 셀에 데이터가 없으므로 CurrentRegion은 셀 자신입니다. 1~7번까지 숫자로 구분돤 영역은 인접셀에 데이터가 있습니다. 숫자 영역의 셀을 선택하고 Ctrl+Shift+별표( * )를 눌러 CurrentRegion을 표시해보면 표시된 영역이 조금씩 다르고 행과 열의 수도 조금씩 다릅니다.

● 1번 구역의 경우

[A1]셀에 해당하는 CurrentRegion입니다.

cell currentregion

 

  • 주영역 좌측 영역과 상측 영역이 포함 선택 표시됩니다.
  • Rows가 1만큼 증가되고 Columns도 1만큼 증가 됐습니다.

● 2번 구역의 경우

row column

 

[B1]셀, [B2]셀에 해당하는 CurrentRegion입니다.
  • 주영역 상단 영역이 포함 선택 표시됩니다.
  • Rows가 1만큼 증가되고 Columns는 변화 없습니다. .

● 3번 구역의 경우

3rd region

 

 [A2]셀~[A4]셀에 해당하는 CurrentRegion입니다

  • 주영역 좌측 영역이 포함 선택 표시됩니다.
  • Rows는 변화 없고 Columns는 1만큼 증가했습니다.

● 4번 구역의 경우

currentregion4

 

[A5]셀에 해당하는 CurrentRegion입니다.

  • 주영역 좌측 영역과 하단영역이 포함 선택 표시됩니다.
  • Rows는 4행이 표시됐는데 vba 메시지는 3을 알렸습니다. Columns는 1만큼 증가했습니다. ?? 

● 5번 구역의 경우

현재영역5

 

 [B5]셀~[E5]셀에 해당하는 CurrentRegion입니다.

  • 주영역 하단 영역이 포함 선택 표시됩니다.
  • Rows는 4행이 표시 됐으나 VBA 메시지는 3을 알립니다. Columns는 주영역과 같은 4열입니다.

● 6번 구역의 경우

6 block

 

[F5]셀에 해당하는 CurrentRegion입니다.

  • 주영역 하단 영역과 우측영역이 포함 선택 표시됩니다.
  • Rows는 4행이 표시 됐으나 VBA 메시지는 3을 알립니다. Columns는 5열을 표시했으나 VBA 매시지는 주영역과 같은 4열입니다.

● 7번 구역의 경우

7 currentregion

 

[F2]셀~[F4]셀에 해당하는 CurrentRegion입니다.

  • 주영역 우측 영역이 포함 선택 표시됩니다.
  • Rows는 3행이 표시 됐읍니다. Columns는 5열이 표시됐으나 메시지는 주영역과 같은 4열입니다.

▶ access 필터 조건문 작성

▶ 구글 스프레드시트 SUMPRODUCT 함수 배열간 계산 함수

▶ [구글 스프레드시트 기초] 문서 자동화 구글 앱스 스크립트 시작 개요

 

반응형