vba函数:返回带换行符的字符串

时间:2013-06-11 20:50:41

标签: excel excel-vba vba

首先,VBA新手。

我正在实施此解决方案how-to-merge-all-column-into-one-cell-in-excel[stackoverflow],但有一个后续工作。

A1:I
A2:am
A3:a
A4:boy

我的输出是:Iamaboy但我希望在一个单元格中:

I
am
a
boy

函数似乎没有返回vbNewLinechr(10)chr(13) ...

的字符串

7 个答案:

答案 0 :(得分:3)

一行代码:

p

答案 1 :(得分:1)

正如tlewin所说,答案是

=ConcatenateRange(A1:A4,CHAR(10))

或者,使用[alt-enter]你可以像这样写

=ConcatenateRange(A1:A4,"
")

“但是等等,”你说,“我试过了,它不起作用!” 好吧,你看,当你在Excel中手动输入I[alt-enter]am[alt-enter]a[alt-enter]boy之类的东西,甚至执行[A1] = "I" & vbNewLine & "am"之类的语句时,Excel会自动更改单元格格式并打开自动换行。自动换行必需,以便在单元格中显示换行符。但是,如果从UDF返回包含换行符的字符串,则Excel不会更新格式。

我可以想到两种可能的解决方案:

  1. 中使用此功能的任何单元格上手动启用自动换行
  2. (不推荐)在ConcatenateRange UDF调用期间将引用存储在Application.Caller中,然后设置Application.OnTime(now, "AddWordWrap")调用并编写AddWordWrap子例程,以便它使用存储的引用将wordwrap格式添加到cell(这是因为您无法在UDF中更新单元格的格式)。这种方法有问题而且有问题。

答案 2 :(得分:0)

只需使用CHAR(10)分隔符:

=ConcatenateRange(A1:A4;CHAR(10))

答案 3 :(得分:0)

使用:

=A1&"[Alt+Enter]"&A2&"[Alt+Enter]"&A3&"[Alt+Enter]"&A4

答案 4 :(得分:0)

尝试使用此

Sheet1.Range("A1").Value = "sgar" & Chr(10) & "saha"

答案 5 :(得分:0)

Cells(row, column) = "current line" & Chr(10) & "new line"

答案 6 :(得分:-1)

我坚持使用它,一旦我使用'wrap text',它确实有效。