본문 바로가기
Range object

[Range 개체] Offset Property

2023. 6. 28.

지정된 범위에서 오프셋된 범위를 나타내는 Range 개체를 반환합니다 .

1. 오프셋된 범위의 주소 출력하기

Sub OffsetExample()
    ' 기준 셀 설정 (A1)
    Dim rng As Range
    Set rng = Range("A1")

    ' A1 기준으로 아래로 2칸 이동한 셀 참조 (A3)
    Dim offsetRange1 As Range
    Set offsetRange1 = rng.Offset(2, 0)

    ' A1 기준으로 오른쪽으로 3칸 이동한 셀 참조 (D1)
    Dim offsetRange2 As Range
    Set offsetRange2 = rng.Offset(0, 3)

    ' A1 기준으로 아래로 3칸, 오른쪽으로 4칸 이동한 셀 참조 (E4)
    Dim offsetRange3 As Range
    Set offsetRange3 = rng.Offset(3, 4)

    ' 각각의 오프셋 셀 주소를 출력합니다.
    Debug.Print "Offset Range 1: " & offsetRange1.Address    ' "Offset Range 1: $A$3" 출력
    Debug.Print "Offset Range 2: " & offsetRange2.Address    ' "Offset Range 2: $D$1" 출력
    Debug.Print "Offset Range 3: " & offsetRange3.Address    ' "Offset Range 3: $E$4" 출력
End Sub

offset속성은 OFFSET함수를 알고 있으면 이해가 쉽습니다.

 

OFFSET함수 구문은 다음과 같습니다.

 

OFFSET(reference, rows, cols, [height], [width])

rows는 Offset속성의 RowOffset에 해당합니다.

cols는 Offset속성의 ColumnOffset에 해당합니다.

2. 오프셋된 범위 선택하기

Sub ChangeCellSelection()

    Range("A1").Offset(1, 3).Select
    Debug.Print "선택된 셀 주소: " & ActiveCell.Address
    Debug.Print
    
    Range("B5").Offset(2, 2).Select
    Debug.Print "선택된 셀 주소: " & ActiveCell.Address
    Debug.Print
    
    Range("C2").Offset(1, -2).Select
    Debug.Print "선택된 셀 주소: " & ActiveCell.Address
    Debug.Print
    
    Range("D3").Offset(-2, -1).Select
    Debug.Print "선택된 셀 주소: " & ActiveCell.Address
    
End Sub

3. 복사하기

Sub CopyWithOffset()
    Dim sourceRange As Range
    Dim targetRange As Range

    ' 원본 범위 정의
    Set sourceRange = Range("A1:A5")

    ' 대상 범위를 원본 범위에서 3행 아래로, 2열 오른쪽으로 설정
    Set targetRange = sourceRange.Offset(3, 2)

    ' 원본 범위를 대상 범위로 복사
    sourceRange.Copy targetRange
    
End Sub

 

'Range object' 카테고리의 다른 글

[Range개체] Font속성  (0) 2023.07.01
[Range개체] Resize 속성  (0) 2023.06.29
셀 복사,잘라내기,붙여넣기  (0) 2023.06.28
셀에 수식 입력하기  (0) 2023.06.25
셀에 값 입력하기  (0) 2023.06.25