본문 바로가기

엑셀로 풀어가는 세상

엑셀 VBA #07 / 셀 범위 선택하기_2 [VBA] -Resize & Offset

엑셀 VBA #07 / 셀 범위 선택하기_2 [VBA]


목적 : Resize & Offset을 활용하여 플렉시블하게 셀 범위 선택하기


1. Resize
구조 : 기준개체.Resize(행,열)
의미 : 기준개체를 바탕으로 행과 열만큼 영역을 재지정

2. 사용
Dim rng As Range
Set rng =range("A1").CurrentRegion

rng.Resize(2,3).Select

 


Resize(,3)의 의미는 Resize(0,3)가 아니라~~~
!!!!! rng.Resize(,3)  = rng.Resize(rng.Rows.Count,3)

rng.Rows.Count : rng영역의 행의 갯수를 산출


그러면 rng.Resize(3)은 어떤 의미일까........?

rng.Resize(3, 열전체)를 의미한다. 즉 rng.Resize(3,rng.columms.count)이다.

 

 

3. 셀 범위가 가변적인 경우, Resize & Offset 활용

행과 열이 가변적 일 때ㅐㅐㅐ

 

제목행을 제외한 데이타 테이블 전체 셀 범위를 선택하기!!!


Dim rng As Range
Dim cn As Long
Set rng =range("A1").CurrentRegion

cn=Cells(1,Columns.Count).End(xlToLeft).Column
'열번호 찾기 : 1행의 데이타 유무와 관계없이 1행의 마지막셀에 가서 열번호를 보여줘.

rng.Offset(1).Resize(rng.Rows.Count-1,cn).Select

'Offset(1) : rng영역에서 행 방향으로 1행 이동 = Offset(1,0)

'rng.Rows.Count-1 : rng영역의 전체 행의 갯수에서 제목행 개수(1)을 빼기

결과값

4. 핵심정리

특정 범위 잡을 때, 제목행 빼고, 마지막 열도 계산

cn = Cells(1, Columns.Count).End(xlToLeft).Column
rng.Offset(1, 0).Resize(rng.Rows.Count - 1, cn)

 

특정열의 마지막 셀 (중간 빈 셀O) 번호 찾기
Cells(4, Columns.Count).End(xlToLeft).Column

 

특정행의 마지막 셀(중간 빈 셀O) 번호 찾기
Cells(Rows.Count, "A").End(xlUp).Row

vba#07.xlsm
0.02MB

 

 

 

엑셀 VBA #03 / 셀 하나 선택하기_2[VBA] - End속성 이용

엑셀 VBA #05 / 셀 하나 선택하기_4 [VBA]-Offset

 

 

https://www.youtube.com/watch?v=VN9mj9vrnsw&t=5s

 

 

 

반응형