Моя цель — сделать перенос строки после имени, фамилии, разделенной запятой. Если я этого не сделаю, ячейка будет слишком маленькой, и текст не будет виден полностью. Поскольку это форма, созданная макросом, каждый раз длина имен людей меняется, поэтому устанавливать большую площадь ячейки (в настоящее время несколько объединенных ячеек) не является решением. Пока что я попробовал несколько вариантов, и ни один из них не работает.
Dim rng As Range
Set rng = Range("E11:N13")
With rng
.Merge
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
Rows("13:13").RowHeight = 68
Range("E8:G8").Merge
Range("E8").FormulaR1C1 = "=TODAY()"
If Not IsEmpty(rng.Value) And VarType(rng.Value) = vbString Then
If InStr(rng.Value, ",") > 0 Then
' rng.Value = Replace(rng.Value, ",", vbNewLine)
'rng.Value = Replace(rng.Value, ",", Chr(10))
rng.Value = Replace(rng.Value, ",", vbLf)
End If
End If
rng.Value
помещает диапазон в массив, и вы не можете применить VBA.Replace
к массиву. Он работает только со строками, и вам нужна итерация. Но вам следует использовать Range.Replace
. Вам следует просто использовать rng.Replace ",", vbLf
.
Пожалуйста, используйте следующий адаптированный код:
Dim rng As Range
Set rng = Range("E11:N13")
With rng
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.Replace ",", vbLf
End With
VBA.Replace
не работает с массивами и rng.Value
помещает диапазон в массив.
Пожалуйста, предоставьте некоторые примеры данных и ожидаемый результат - тогда будет легче помочь.