vba函数:用换行符返回string
首先,新的VBA。
我正在实施这个解决scheme如何合并所有列的单元格在Excel中[stackoverflow] ,但有一个后续。
A1:I A2:am A3:a A4:boy
我的输出是: Iamaboy
但我想在一个单元格中:
I am a boy
函数似乎不会返回string与vbNewLine
, vbNewLine
chr(10)
或vbNewLine
chr(13)
…
一行代码:
Range("B1").Formula = join(application.transpose(Range("A1:A4")),vblf)
尝试使用这个
Sheet1.Range("A1").Value = "sgar" & Chr(10) & "saha"
只需使用CHAR(10)分隔符:
=ConcatenateRange(A1:A4;CHAR(10))
使用:
=A1&"[Alt+Enter]"&A2&"[Alt+Enter]"&A3&"[Alt+Enter]"&A4
答案就像tlewin所说的那样
=ConcatenateRange(A1:A4,CHAR(10))
或者,使用[alt-enter],你可以这样写
=ConcatenateRange(A1:A4," ")
“但是等等,”你说,“我试过了,这不起作用!”
那么,你看,当你在Excel中手动input像I[alt-enter]am[alt-enter]a[alt-enter]boy
,甚至执行一个语句如[A1] = "I" & vbNewLine & "am"
Excel会自动更改单元格格式并打开自动换行。 换行符需要在换行符中显示。 但是,如果从UDF中返回带有换行符的string,则Excel不会更新格式。
我可以想到两个可能的解决scheme:
- 手动启用任何使用此function的单元格的自动换行
- (不build议)在ConcatenateRange UDF调用期间将引用存储在
Application.Caller
中,然后设置一个Application.OnTime(now, "AddWordWrap")
称为Application.OnTime(now, "AddWordWrap")
调用并编写AddWordWrap子例程,以便它使用存储的引用将wordwrap格式添加到单元格(这是因为你不能在UDF中更新单元格的格式)。 这种方法是越野车和问题。
我坚持这一点,它一旦我使用'包装文本'的工作。