ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的测验 > 综合应用 > 如何将合并单元格中的多行内容分行显示?

如何将合并单元格中的多行内容分行显示?

作者:绿色风 分类: 时间:2022-08-18 浏览:351
楼主
kevinchengcw
将A1:A9单元格合并,并设置自动换行,写入“ET社区会员之家”并重复多次直到一至九行全部有内容,全部操作过程中字体使用默认字体大小

答题要求:方法不限(但需满足本题后面要求),在B列列宽与A列相同时B列每行与A列相同(字符数量及文本内容),且当B列列宽改变时可以继续实现连续的分行显示功能

实现效果:如附件演示(VBA示例)

备注:按钮非必需,B列格式设置不限,附件示例中A列起始列宽为51.63,B列起始列宽同A列

答题期限:20天(截止日为2010年5月7日)

 

个人答案如下:
  1. Sub test()
  2. Dim Str As String
  3. Dim M, N, I As Integer
  4. Dim Rh As Double
  5. Str = [a1].Value  '将A1单元格的内容赋值给Str
  6. M = 1
  7. I = 1
  8. Application.ScreenUpdating = False   '关掉屏幕刷新了,目的就是不让你看
  9. Columns(2).ClearContents   '先清空B列内容
  10. Columns(2).WrapText = True   '允许B列单元格内换行
  11. Cells(1, 2) = Left(Str, 1)  '先写入一个字符到B1
  12. With Cells(1, 2)    '行高自动适应后记下来赋值给Rh
  13.     .EntireRow.AutoFit
  14.     Rh = .RowHeight
  15. End With
  16. For N = 1 To Len(Str) - M + 1    '一个一个写入Str的内容
  17.     Cells(I, 2) = Mid(Str, M, N)
  18.     Cells(I, 2).EntireRow.AutoFit   '行高自动适应
  19.     Do While Cells(I, 2).RowHeight <> Rh   '因为可以自动换行,所以当换行时自动适应的行高会变化,就不等于Rh了
  20.         Cells(I, 2) = Mid(Str, M, N - 1)   '截取未变时的字符串写入单元格
  21.         N = N - 1   '因为写入了现在的字符所以行高变了,所以要减掉它
  22.         Cells(I, 2).EntireRow.AutoFit   '再调整一下行高
  23.         If Cells(I, 2).RowHeight = Rh Then   '调整后对了就该加的加该减的减了
  24.             M = M + N  '下一循环的起始值改变
  25.             I = I + 1  '单元格行号下移一珩
  26.         End If
  27.     Loop
  28. Next N
  29. Application.ScreenUpdating = True   '这回可以看结果了
  30. End Sub
附原文件
合并单元格里的多行文本分行显示.rar
2楼
wjc2090742
不会做一步到位的办法。快捷键ctrl+q。
只能做到快捷键,然后点击一下确定。
自动两端对齐填充.zip
3楼
罗刚君
http://www.exceltip.net/thread-3610-1-2.html

让合并区域也自动换行
我已经出了很久,没有答案1.gif
 
4楼
mosforyou
一下子还没看明白如何参与与回复了!

mosforyou.rar
5楼
amulee
  1. Sub 方法一()
  2.     '利用内容重排。
  3.     On Error Resume Next
  4.     Dim strYS$, Temp, LenA&, LenC&
  5.     strYS = Range("A1")
  6.     LenA = Len(strYS)
  7.     Columns("B:B").Clear
  8.     For i = 1 To LenA \ 255 + 1
  9.         Temp = Range("B" & Range("B65536").End(xlUp).Row)
  10.         LenC = Len(Temp)
  11.         Temp = Temp & Left(strYS, 255 - LenC)
  12.         Range("B" & Range("B65536").End(xlUp).Row) = Temp
  13.         Range("B:B").Justify
  14.         strYS = Right(strYS, Len(strYS) - 255 + LenC)
  15.     Next
  16. End Sub
6楼
kevinchengcw
本测验时间即将到期,请有意的网友一试

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap