Daily Life of BlueRose

컴퓨터 & 코딩 공부/엑셀 & VBA

엑셀 VBA 기본기능 정리 - 선택하기/범위조작(1)

푸른로즈 2023. 7. 3. 22:03
728x90

여는 글

VBA로 자동화된 서식을 만들 때, 셀, 그리고 인접한 부분을 선택하는 기능을 숨쉬듯이 사용하게 됩니다.

 

특히 Cells(Rows.Count, "A").end(xlUp)은 유난히 많이 쓰이는 것 같네요.

 

적은건 몇개 없지만, 적혀있는 모든 내용들이 필수암기 내용들입니다. 

 

편하려고 찾다보면 자연스럽게 외워지긴 할거에요.

 

 

 


엑셀 VBA 기본기능 정리 - 선택하기/범위조작(1)

    • 특정 셀 선택
      • Range("a1").Select
      • Cells(1, "az").Select – 일반적인 사용
      • Cells(Foo, "az").Select – 변수활용. For문과 상성이 좋다.
      • Cells(1, 1).Select – 숫자만 사용
        • 열의 번호는 직접 실행창(Ctrl+G)에서 ?range("AZ1".Column)으로 검색
        • Cells 개체는 인텔리센스가 작동되지 않음. 변수로 받으면 작동가능
    • 표의 끝 셀 선택 : End
      • Range("a1").End(상하좌우*).Select
        • 옵션지정 : xlUp, xlDown, xlToLeft, xlToRight로 지정
        • 한계 : 중간에 빈 칸이 있는 경우에는 빈칸 앞에서 멈추는 문제가 있음
      • Cells(Rows.Count, "b").End(xlUp).Select
        • 시트의 가장 마지막 셀로 이동한 후, 끝에서부터 처음 나오는 값을 선택함
        • End(방향)을 조절하되, 사용자 기준에서는 반대의 방향을 입력함에 주의가 필요하고, 앞쪽도 Cells(Rows.Count, 숫자) / Cells(숫자, Column.count)의 형태로 변형 필요

 

    • 전체 행/열 선택 : Row / EntireRow
      • 단순 전체행/열 선택
        • Column(행번호).Select
        • Column("행 알파벳").Select
        • Rows(열번호).Select
      • 특정 셀을 참조하여 선택
        • Range("기준셀").EntireColumn.Select
        • Row("기준셀").EntireRow.Select
      • 범위의 형태로 선택
        Dim rng As Range
        Set rng = Range("특정셀1 : 특정셀2")
      • 오프셋 부여
        • 기본형 - Range("a1").Offset(1, 1).Select* Offset의 인수는 상하좌우로 이동하기 위하여 음수/양수를 사용가능함
        • 활용형 - Cells(Rows.Count, "c").End(xlUp).Offset(1, 0)

 

        • 예시
Public Sub usingOffset()
Dim c As Range                          			'범위 변수 c 선언
For Each c In Range("c1:c10")           			'반복문에 의해 c값은 C1~C10 순회
    If c >= 50 Then                     			'순회 중, 셀값이 50을 넘는 경우
        Cells(Rows.Count, "f").End(xlUp).Offset(1, 0) = c
    End If                              			'f열의 상단에서부터 1칸씩 내려가며 값을 누적시킨다.
Next
End Sub
반응형