728x90

찾고자 하는 파일이 있는 폴더가 여러개인 경우 모두 같은 셀에 표기를 하였는데


한 행에는 디렉토리가 1개씩만 보이도록 처리해야 할 상황이 생겨서 코드를 만들었다.

셀내의줄바꿈분리.xlsm


처음에는 vbNewLine 인가 하고 테스트를 해보니 딱 2개로만 분리가 되고 줄바꿈이 3개 4개인 것은 인식을 못하는 걸 확인했다.

그래서 자동매크로를 실행해서 줄바꿈 명령어가 Chr(10) 인 것을 확인했다.

행을 추가하거나 삭제하는 것이므로 For 문은 역순으로 시행되도록 해야 한다.

궁금한 사항은 중간 중간에 Debug.Print 문으로 확인해가면서 코드를 완벽하게 테스트를 했다.

Sub 셀내의줄바꿈분리()
    Dim rngC, rngAll As Range
    Dim v, n%, T$
    Dim r, eRow, k As Long
   
    Set rngAll = Range([A2], Cells(Rows.Count, "A").End(3))
    eRow = Cells(Rows.Count, "B").End(3).Row
    For r = eRow To 2 Step -1
        Set rngC = Cells(r, "A")
        If InStr(rngC, Chr(10)) Then
            v = Split(rngC, Chr(10))        '// Split 으로 분리하여 배열에 저장
            For n = UBound(v) To LBound(v) Step -1      '// 배열 갯수만큼 반복 순환하면서
                If n > 0 Then
                    rngC.Offset(1).EntireRow.Insert
                    rngC.EntireRow.Copy
                    rngC.Offset(1).EntireRow.PasteSpecial Paste:=xlPasteValues
                    Application.CutCopyMode = False
                    rngC.Offset(1) = v(n)       '// 얼핏보기에는 rngC.Offset(n) 인줄로 착각했다가 테스트하면서 수정했음
                Else
                    rngC.Offset(n) = v(n)       '// rngC.Offset(0) 는 rngC 를 의미함
                End If
                k = k + 1
            Next n
        End If
    Next r
    Set rngAll = Nothing

    MsgBox k & "행으로 분리 완료"
End Sub

블로그 이미지

Link2Me

,