функция vba: возвращаемая строка с новой строкой
прежде всего, новый для VBA.
я реализую это решение как объединить все колонки в одну ячейку-в-Excel[и StackOverflow], но есть продолжение.
A1:I
A2:am
A3:a
A4:boy
мой вывод такой: Iamaboy
но я бы в одной ячейке:
I
am
a
boy
функции, похоже, не возвращают строки с vbNewLine
, chr(10)
или chr(13)
...
7 ответов
ответ таков, как сказал тлевин
=ConcatenateRange(A1:A4,CHAR(10))
или, альтернативно, с помощью [alt-enter] вы можете написать это так
=ConcatenateRange(A1:A4,"
")
Ну, вы видите, когда вы вручную вводите что-то вроде I[alt-enter]am[alt-enter]a[alt-enter]boy
в Excel или даже выполнить инструкцию, такую как [A1] = "I" & vbNewLine & "am"
Excel автоматически меняет форматирование ячеек и включает перенос слов. Перенос слов требуются для linebreaks, которые будут показаны в ячейке. Однако, если вы возвращаете строку с linebreak в ней из UDF Excel, формат не обновляется.
Я могу придумать два возможных решения:
- вручную включить перенос слов на любой ячейке вы используете эту функцию в
- (не рекомендуется) хранить ссылку в
Application.Caller
во время вызова ConcatenateRange UDF установитеApplication.OnTime(now, "AddWordWrap")
вызовите и напишите подпрограмму AddWordWrap, чтобы она использовала сохраненную ссылку для добавления форматирования wordwrap в ячейку (это связано с тем, что вы не можете обновить формат ячейки в UDF). Этот метод является ошибочным и проблематичным.