Попробуйте этот код, пожалуйста. Вам также нужно вставить строку в каждую итерацию. Опуская элемент массива 0, вы пропускаете первый:
Sub SplitCellValue()
Dim str As String, actCell As Range, i As Long
Dim ArrStr() As String
Set actCell = ActiveCell 'it must be the cell with the comma separated string
str = actCell.value
ArrStr = Split(str, ", ")
For i = UBound(ArrStr) To 1 Step -1
actCell.Offset(1, 0).EntireRow.Insert
actCell.Offset(1, 0).value = ArrStr(i)
Next i
End Sub
Вариант после вашего последнего «объяснения» ...
Sub SplitCellValue()
Dim str As String, actCell As Range, i As Long
Dim ArrStr() As String
Set actCell = ActiveCell 'it must be the cell with the comma separated string
str = actCell.value
ArrStr = Split(str, ", ")
If UBound(ArrStr) = 0 Then MsgBox _
"Please select the cell keeping the comma separated string": Exit Sub
actCell.value = ArrStr(0)
For i = 1 To UBound(ArrStr)
actCell.Offset(i, 0).value = ArrStr(i)
Next i
End Sub
Ваш код не работал, потому что он обновлялся каждый раз, когда ActiveCell
. Должен быть установлен с самого начала ...