使用VBA在单个Excel单元格中划分多行文本

时间:2013-04-22 14:01:34

标签: excel vba cell line-breaks

所以我一直在寻找如何根据文本的长度划分文本,却找不到任何东西。

我的问题是:在使用vba代码的Excel中,是否可以在一个单元格中将一行文本分成几行?

我无法访问文本本身,它是通过Access数据库中的查询插入的。话虽如此,我不能真正使用行号字符“Chr(10)”来帮助我。

我正在考虑一种方法来区分文本长度是否大于一定数量的字母,它可以分成2(或更实际),然后使用换行符将其连接起来。

我希望我的问题/要求足够清楚。

提前致谢。

2 个答案:

答案 0 :(得分:0)

如果我正确地回忆起VB,你需要使用@vBCrLf

如:

Dim range
Dim i
Dim split_value
Dim splits() as Variant

range = Range("A1")
split_value = 15
i = 0

' Split them
While( Len(range.Value) > split_value )
    splits[i] = Mid(range.Value, 1, split_value)
    range.Value = Mid(range.Value, split_value + 1)
    i = i + 1
Wend

' Join them
For c = LBound(splits) To UBound(splits)
    range.Value = range.Value & vbCrLf & splits[c]
Next c

答案 1 :(得分:0)

如果它仅用于显示目的,那么我认为有一种更简单的方法。您可以将列宽设置为您喜欢的宽度,并将该列中的单元格格式化为Wrap Text。

您的Querytable有两个需要注意的设置。默认情况下取消选中“调整列宽”,您需要进行检查。如果不这样做,Excel将使列更大,并且检查Wrap Text的事实无关紧要。默认情况下会选中“保留单元格格式”,并且需要保持选中状态。这将确保为该列保留Wrap文本。

除非使用固定字体,否则设置列宽并不能保证获得特定数量的字符。但如果你只是想要接近,这应该有效。