VBA 빈행 삽입하기
커서가 있는 위치부터 한행씩 빈행을 삽입하는 VBA 코드 입니다.
위 그림을 보면 중간에 빈행이 있는 경우도 있고 연달아 데이터가 입력된 경우도 있을 겁니다.
일정하게 한행씩 빈행을 삽입하는 코드로 작성을 했습니다.
이미 한행씩 빈행이 삽입되어 있는 경우에는 변화가 생기지 않습니다.
Sub InSert_BlankRow()
Dim Counter
Dim i As Integer
Dim rngTarget As Range
Application.ScreenUpdating = False '// 화면 업데이트 (일시)정지
ActiveCell.Select '//현재 커서가 있는 셀을 기준으로
Set rngTarget = Range(ActiveCell, Cells(Rows.Count, ActiveCell.Column).End(3))
'// 현재 커서가 있는 셀부터 시작해서 데이터가 입력된 마지막셀까지 범위 지정
Counter = rngTarget.Rows.Count
For i = 1 To Counter '// Loops through the desired number of rows.
ActiveCell.Value = Trim(ActiveCell.Value) '// ActiveCell 의 빈행백 제거
If ActiveCell.Value <> "" And ActiveCell.Offset(1).Value <> "" Then
'// ActiveCell 과 바로 아래 셀이 둘다 공백이 아니면 ActiveCell 아래 행을 하나 삽입하라
ActiveCell.Offset(1).EntireRow.Insert
Counter = Counter - 1
ActiveCell.Offset(2).Select '// 2행 아래로 이동
ElseIf ActiveCell.Value = "" And ActiveCell.Offset(1).Value = "" Then
'// ActiveCell 과 바로 아래 셀이 둘다 공백이면 ActiveCell 아래 행을 삭제하라
ActiveCell.Offset(1).EntireRow.Delete
Else
ActiveCell.Offset(1).Select '// 1행 아래로 이동
End If
Next i
End Sub
질의가 있어서 내용을 추가합니다. 몇번을 실행하는지 여부를 i, d 를 추가해서 표시하도록 했습니다.
Sub 행일괄삽입()
Dim C As Range
Dim rngtarget As Range
Dim i As Double, d As Double
Set rngtarget = Range("B1", Cells(Rows.Count, "B").End(3))
i = 0
d = 0
For Each C In rngtarget
C.Select
If C.Value <> "" And C.Offset(1).Value <> "" Then
C.Offset(1).EntireRow.Insert
i = i + 1
ElseIf C.Value = "" And C.Offset(1).Value = "" Then
C.Offset(1).EntireRow.Delete
d = d + 1
Else
End If
Next C
MsgBox "d=" & d & " i=" & i
End Sub
'업무 능력 향상 > 엑셀 VBA 기초' 카테고리의 다른 글
[VBA] 글꼴 변경 (0) | 2014.03.09 |
---|---|
VBA 데이터 옮기기 (0) | 2014.03.04 |
VBA 빈셀은 지우고 한글은 우측셀로 이동시키기 (0) | 2014.02.28 |
VBA 괄호제거 (0) | 2014.02.26 |
[VBA기초] 빈행 삭제 (4) | 2014.02.06 |