Как поставить разрыв строки в функции Concat в VBA - PullRequest
0 голосов
/ 23 ноября 2018

У меня очень специфическая проблема, я пытаюсь объединить значения в строку, используя разрыв строки, я перепробовал все возможности, ничего не работает.Я пробовал vbnewline, vbLf, CHR (10).

Range("M2:M" & AfterDuplastRow).Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
Range("M1").Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Formula = _
"=IF(F2=""" & meal & """," & _
"IF(F1<>F2,B2,Concat(M1,CHR(10),B2)),"""")"

Также я пробовал вот так

ActiveCell.Formula = _
"=IF(F2=""" & meal & """," & _
"IF(F1<>F2,B2,Concat(M1," & CHR(10) & ",B2)),"""")"

Спасибо за вашу помощь

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Похоже, это может быть XY Проблема ...

Даже если вы добавите новую строку (vbNewLine), возврат каретки (vbCr),Перевод строки (vbLf) или возврат каретки и перевод строки (vbCrLf), только будет виден в ячейке, если для этого включен Wrap Text.ячейка.

Таким образом, попробуйте выполнить это простое изменение:

Range("M2:M" & AfterDuplastRow).Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
Range("M1").Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Formula = "=IF(F2=""" & meal & """," & _
    "IF(F1<>F2,B2,Concat(M1,CHR(10),B2)),"""")"
Range("M1").WrapText = True 'This line should fix your issue

(Кроме того, вы можете прочитать о Как избежать использования Select в Excel VBA )

0 голосов
/ 23 ноября 2018

Используйте константу vbNewLine:

ActiveCell.Formula = "=IF(F2=""" & meal & """,IF(F1<>F2,B2,Concat(M1," & vbNewLine & ",B2)),"""")"
...