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
코드 설명
- 시작 셀 지정
- Set StartCell = Range("A1")를 통해 데이터가 시작되는 첫 번째 셀을 지정합니다.
- 마지막 행과 열 찾기
- LastRow: 시작 열에서 데이터가 있는 마지막 행을 찾습니다.
- LastCol: 시작 행에서 데이터가 있는 마지막 열을 찾습니다.
- 동적 범위 정의
- Range(StartCell, Cells(LastRow, LastCol))를 사용하여 새로 확장된 영역을 동적으로 설정합니다.
- 결과 확인
- 확장된 범위를 메시지 박스로 출력하여 확인할 수 있습니다.
데이터 추가 후 자동 실행 (워크시트 변경 이벤트 활용)
데이터가 추가될 때마다 자동으로 영역이 확장되도록 하려면 워크시트 변경 이벤트를 활용할 수 있습니다.
이벤트 코드: 워크시트 변경 감지
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
사용 방법
- 해당 코드를 변경하려는 워크시트의 코드 창에 추가합니다.
- VBA 편집기에서 해당 워크시트를 선택 후 추가.
- 데이터를 추가하거나 변경하면 자동으로 동작합니다.
결과
- 원래 데이터: $A$1:$B$10
- 새 데이터 추가: A11 또는 B11에 데이터를 추가하면 자동으로 $A$1:$B$11로 범위가 확장됩니다.
- 확인 방법: Rng 변수에 새롭게 확장된 영역이 저장됩니다.
위 코드는 엑셀에서 데이터를 동적으로 관리할 때 유용합니다.
반응형