'행 삭제 기본 개념 이해'에 해당되는 글 1건

728x90

엑셀 VBA 를 배우는 초보단계에서는 개념 이해가 매우 중요합니다.


Sub 행삭제()
    Dim r, i As Double
    Dim LastRow As Double
   
    LastRow = Cells(Rows.Count, "F").End(3).Row
    For r = LastRow To 1 Step -1
        If Cells(r, "F") = 1 Then
            Rows(r).Delete
            i = i + 1
        End If
    Next r
    MsgBox i & "개 삭제"
End Sub


개념 이해를 하려면 아래처럼 화면을 구성하는 것이 좋습니다.

하단에는 지역창을 띄워놓고 F8 키를 눌러서 한줄 한줄 내려가면서 값이 어떻게 변경되는지 눈으로 확인하면 코드 이해가 좀 더 쉽습니다.


코드 설명

Option Explicit
를 선언해서 VBA 코드에 변수선언이 안된 변수가 있는지 점검하는 것이 에러를 없을 수 있습니다.

Cells(행, 열) 의 개념만 이해하면 됩니다.
Cells(2,2) 는 B2셀을 의미하겠죠.
Cells(2,"F") 는 F2셀을 의미합니다.
엑셀을 다루다보면 마지막 행을 찾아서 직접 적어주는 방식보다는
컴퓨터가 알아서 마지막 행을 자동 인식하도록 설정하는 것이 편합니다.
Cells(Rows.Count,"F") 가 의미하는 것은 F열의 Rows.Count (엑셀에서 제공하는 마지막행) 을 의미합니다.
Cells(Rows.Count, "F").End(3) 이 의미하는 것은 F열의 Rows.Count 로부터 End(3) 또는 End(xlUp) 위로 이동하여 데이터가 들어있는 마지막 행을 찾아라 입니다.
Cells(Rows.Count, "F").End(3).Row 는 마지막 셀이 들어 있는 행의 값을 의미합니다.

행을 삭제할 때에는 반드시 밑에서 부터 삭제를 해야 문제가 생기지 않습니다.
For Next 문에서 

    For r = LastRow To 1 Step -1
        If Cells(r, "F") = 1 Then
            Rows(r).Delete
            i = i + 1
        End If
    Next r

시작은 마지막행번호, 마지막 행은 데이터가 들어있는 마지막번호, Step 은 1씩 감소

For 문은 시작행부터 마지막행가지 반복수행하라는 것이고요.

IF문은 For 문을 반복 수행하다가 조건에 맞는 것이 있으면 그 부분을 실행하라는 것입니다.


변수 선언은 각자의 취향입니다만 가능하면 약어로 행인지 열인지 얼른 파악할 수 있는 걸로 정하면 더 좋을 거 같습니다.

저는 행을 i 로 선언하기도 하는 경우도 있고요. r 로 선언하는 경우도 있습니다.

r 로 하면 row(행)의 약자로 이해하기가 더 쉬울 수 있겠죠.


VBA 에서 코드 짜는 것은 알고 보면 정말 쉬운 겁니다.

다만, 핵심 코드를 짜는 로직은 쉬운데, 엑셀 VBA 가 제공하는 기본 명령어를 알아야 합니다.

그걸 바로 바로 알아서 적용하면 좋은데 그건 시간을 가지고 배우는 수 밖에는 없습니다.


블로그 이미지

Link2Me

,