728x90

VBA 빈행 삽입하기


커서가 있는 위치부터 한행씩 빈행을 삽입하는 VBA 코드 입니다.


위 그림을 보면 중간에 빈행이 있는 경우도 있고 연달아 데이터가 입력된 경우도 있을 겁니다.

일정하게 한행씩 빈행을 삽입하는 코드로 작성을 했습니다.

이미 한행씩 빈행이 삽입되어 있는 경우에는 변화가 생기지 않습니다.


VBA_Insert_blankrow.vbs


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

728x90

'업무 능력 향상 > 엑셀 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
블로그 이미지

Link2Me

,