Range개체의 EntireRow속성은 지정된 범위를 포함하는 전체 행을 나타내는 Range 개체를 반환합니다. 읽기 전용 속성입니다.
Rows속성과 마찬가지로 Range개체를 반환하므로 Range개체의 속성과 메서드를 사용할 수 있습니다.
아래 코드는 빈 행을 역순으로 삽입하는 예제입니다.
Sub InsertEmptyRows()
Dim MyRange As Range
Dim iCounter As Long
Dim ws As Worksheet
' 워크시트를 선택합니다. 여기서는 현재 활성화된 워크시트를 사용합니다.
Set ws = ActiveSheet
' 처리할 범위를 설정합니다.
Set MyRange = ws.Range("A1:E10")
' 범위의 행 수만큼 뒤에서부터 하나씩 빈 행을 삽입합니다.
' 마지막 행은 2 (첫 번째 행 제외한 행을 선택)부터 시작하므로 2까지 계산을 수행합니다.
For iCounter = MyRange.Rows.Count To 2 Step -1
' 행을 삽입합니다.
MyRange.Rows(iCounter).EntireRow.Insert
Next iCounter
End Sub
매크로 실행 전
매크로 실행 후
역순으로 빈 행을 삽입하는 이유는 행 삽입의 경우 행을 아래로 밀면서 삽입하기 때문입니다.
아래와 같이 코드를 작성했다고 가정합니다.
Sub IncorrectInsertEmptyRows()
Dim MyRange As Range
Dim iCounter As Long
Dim ws As Worksheet
Set ws = ActiveSheet
Set MyRange = ws.Range("A1:E10")
' 범위의 두 번째 행부터 마지막 행까지 앞에서부터 순차적으로 빈 행을 삽입합니다.
For iCounter = 2 To MyRange.Rows.Count
' 행을 삽입합니다.
MyRange.Rows(iCounter).EntireRow.Insert
Next iCounter
End Sub
위 코드를 실행하면 아래 그림과 같은 결과가 발생하므로 행 삽입을 할때는 역순으로 해야 합니다.
다음은 빈 행을 삭제하는 코드입니다.
Sub DeleteEmptyRows()
Dim MyRange As Range
Dim iCounter As Long
Set MyRange = ActiveSheet.UsedRange ' 현재 시트의 사용 중인 범위를 MyRange 변수에 할당
' 역순으로 범위의 각 행을 처리
For iCounter = MyRange.Rows.Count To 1 Step -1
' 만약 현재 행의 모든 값이 비어있다면 (빈 행이라면)
If Application.CountA(Rows(iCounter).EntireRow) = 0 Then
Rows(iCounter).Delete ' 현재 행을 삭제
Else
End If
Next iCounter
End Sub
매크로 실행 전
매크로 실행 후
순차적으로 삭제하는 코드를 만들어 봤습니다.
Sub DeleteEmptyRows()
Dim MyRange As Range
Dim iCounter As Long
Set MyRange = ActiveSheet.UsedRange ' 현재 시트의 사용 중인 범위를 MyRange 변수에 할당
' 순차적으로 범위의 각 행을 처리
For iCounter = 1 To MyRange.Rows.Count
' 만약 현재 행의 모든 값이 비어있다면 (빈 행이라면)
If Application.CountA(Rows(iCounter).EntireRow) = 0 Then
Rows(iCounter).Delete ' 현재 행을 삭제
Else
End If
Next iCounter
End Sub
매크로 실행 전
매크로 실행 후
삭제를 순차적으로 진행하다 보니, 삭제되는 행의 위치가 바뀌어 원하는 작업이 제대로 이루어지지 않았습니다. 이미 언급한대로 셀의 위치에 영향을 주는 삽입이나 삭제와 같은 작업을 할 때는, 역순으로 처리해야 합니다.
'Range object' 카테고리의 다른 글
[Range 개체] Columns속성 (0) | 2023.07.08 |
---|---|
[Range 개체] Column속성 (0) | 2023.07.07 |
[Range 개체] Rows속성 (0) | 2023.07.05 |
[Range 개체] Row속성 (0) | 2023.07.05 |
[Range개체] Address속성 (0) | 2023.07.04 |