VBA

확장 영역 자동 선택

skyground21 2024. 11. 28. 12:18
반응형

확장 영역 자동 선택

 

Sub ExpandRange()
    Dim Rng As Range
    Dim StartCell As Range
    Dim LastRow As Long
    Dim LastCol As Long

    ' 초기 시작 셀 설정 (예: A1)
    Set StartCell = Range("A1")

    ' 마지막 행과 마지막 열 찾기
    LastRow = StartCell.Worksheet.Cells(StartCell.Worksheet.Rows.Count, StartCell.Column).End(xlUp).Row
    LastCol = StartCell.Worksheet.Cells(StartCell.Row, StartCell.Worksheet.Columns.Count).End(xlToLeft).Column

    ' 동적 범위 정의
    Set Rng = StartCell.Worksheet.Range(StartCell, StartCell.Worksheet.Cells(LastRow, LastCol))

    ' 결과 출력
    MsgBox "새로 정의된 범위: " & Rng.Address, vbInformation, "확장된 영역"
End Sub

 

 

코드 설명

  1. 시작 셀 지정
    • Set StartCell = Range("A1")를 통해 데이터가 시작되는 첫 번째 셀을 지정합니다.
  2. 마지막 행과 열 찾기
    • LastRow: 시작 열에서 데이터가 있는 마지막 행을 찾습니다.
    • LastCol: 시작 행에서 데이터가 있는 마지막 열을 찾습니다.
  3. 동적 범위 정의
    • Range(StartCell, Cells(LastRow, LastCol))를 사용하여 새로 확장된 영역을 동적으로 설정합니다.
  4. 결과 확인
    • 확장된 범위를 메시지 박스로 출력하여 확인할 수 있습니다.

 

데이터 추가 후 자동 실행 (워크시트 변경 이벤트 활용)

데이터가 추가될 때마다 자동으로 영역이 확장되도록 하려면 워크시트 변경 이벤트를 활용할 수 있습니다.

이벤트 코드: 워크시트 변경 감지

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim StartCell As Range
    Dim LastRow As Long
    Dim LastCol As Long
    Dim Rng As Range

    ' 초기 시작 셀 설정 (예: A1)
    Set StartCell = Me.Range("A1")

    ' 마지막 행과 열 찾기
    LastRow = Me.Cells(Me.Rows.Count, StartCell.Column).End(xlUp).Row
    LastCol = Me.Cells(StartCell.Row, Me.Columns.Count).End(xlToLeft).Column

    ' 동적 범위 정의
    Set Rng = Me.Range(StartCell, Me.Cells(LastRow, LastCol))

    ' 확장된 범위를 표시 (선택적)
    Debug.Print "확장된 영역: " & Rng.Address
End Sub

 

사용 방법

  1. 해당 코드를 변경하려는 워크시트의 코드 창에 추가합니다.
    • VBA 편집기에서 해당 워크시트를 선택 후 추가.
  2. 데이터를 추가하거나 변경하면 자동으로 동작합니다.

 

결과

  • 원래 데이터: $A$1:$B$10
  • 새 데이터 추가: A11 또는 B11에 데이터를 추가하면 자동으로 $A$1:$B$11로 범위가 확장됩니다.
  • 확인 방법: Rng 변수에 새롭게 확장된 영역이 저장됩니다.

위 코드는 엑셀에서 데이터를 동적으로 관리할 때 유용합니다.

반응형