[VBA] 셀내의 줄바꿈 처리한 것을 행을 추가하여 분리
찾고자 하는 파일이 있는 폴더가 여러개인 경우 모두 같은 셀에 표기를 하였는데
한 행에는 디렉토리가 1개씩만 보이도록 처리해야 할 상황이 생겨서 코드를 만들었다.
그래서 자동매크로를 실행해서 줄바꿈 명령어가 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