Excel VBA实现单元格文本在指定位置(*符号处)自动换行
Excel单元格文本按指定符号换行
需求说明
现有样本数据:
| Item |
|---|
| Item#1 * ItemName_1 |
| Item#2 * ItemName_2 |
需要实现的效果:让单元格文本在*符号位置换行,最终显示为:
Item#1
ItemName_1Item#2
ItemName_2
问题代码及分析
尝试的VBA代码:
Sub BreakAndWrap() Dim rng As Range Set rng = Range("A1", Range("A250").End(xlUp)) For Each cell In rng cell.Value = Replace(cell.Value, "*", ChrW(8209)) cell.WrapText = True Next End Sub
问题根源:ChrW(8209)是Unicode连字符,并非Excel单元格内的换行符,所以只会替换符号,无法触发指定位置的换行。
修正后的代码
Sub BreakAndWrap() Dim rng As Range Set rng = Range("A1", Range("A250").End(xlUp)) For Each cell In rng ' 将*替换为Excel单元格内换行符 cell.Value = Replace(cell.Value, "*", Chr(10)) cell.WrapText = True ' 自动调整行高适配内容 cell.EntireRow.AutoFit Next End Sub
代码说明
Chr(10)是Excel原生识别的单元格内换行符,替换*后,开启WrapText=True即可实现指定位置换行cell.EntireRow.AutoFit为可选配置,用于自动调整行高,避免换行后的内容被截断
内容的提问来源于stack exchange,提问作者Hussein
相关产品推荐
相关产品推荐

