ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3327|回复: 14

[求助] word VBA 选择题根据选项长度自动排版!求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-3-12 13:31 | 显示全部楼层 |阅读模式
想要一个word 选择题选项自动排版的代码,有大神能帮忙吗?
设计是这样的:原始的素材是选择题若干个,每个选择题题干单独一段,四个选项各一段。

想实现的效果是:自动判断ABCD四个选项的长度,如1四个选项加起来可以放一行,就用将四段合并为一段,四个选项之间加占位符;如2四个选项中最长的没有超过段落可容纳长度的一半但又放不到一行,就将四个选项合并成2行,同一行选项间加占位符。如果最长选项长度超过一半,就仍然保留四行。



原始格式:
1.我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干

A.我是选项

B.我是选项

C.我是选项

D.我是选项



2.我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干

A.我是选项我是选项我是选项我

B.我是选项我是选项我是选项我

C.我是选项我是选项我是选项我是选项

D.我是选项我是选项



3.我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干
A.我是选项我是选项我是选项我是选项我是选项我是选项我是选项我是选项

B.我是选项我是选项我是选项我是选项我是选项我是选项

C.我是选项我是选项

D.我是选项我是选项我是选项



排版后格式:根据选项长短分三种:


1.我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干
A.我是选项 B.我是选项 C.我是选项 D.我是选项

2.我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干
A.我是选项我是选项我是选项我 B.我是选项我是选项我是选项我
C.我是选项我是选项我是选项我是选项 D.我是选项我是选项

3.我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干我是题干
A.我是选项我是选项我是选项我是选项我是选项我是选项我是选项我是选项
B.我是选项我是选项我是选项我是选项我是选项我是选项
C.我是选项我是选项
D.我是选项我是选项我是选项

选择题排版样例.zip

10 KB, 下载次数: 73

TA的精华主题

TA的得分主题

发表于 2019-3-12 15:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
是这个意思吗?
QQ截图20190312151848.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-12 15:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

是的,就是这个意思

TA的精华主题

TA的得分主题

发表于 2019-3-12 16:04 | 显示全部楼层
xwd21 发表于 2019-3-12 15:41
是的,就是这个意思
  1. Sub main()
  2.     Dim doc As Document, Rng As Range, arr, lineCount%
  3.     Set doc = ActiveDocument: lineCount = 40
  4.     With doc.Content.Find
  5.         .Text = "A.[!^13]{1,}^13^13B.[!^13]{1,}^13^13C.[!^13]{1,}^13^13D.[!^13]{1,}^13"
  6.         .MatchWildcards = True
  7.         Do While .Execute
  8.             Set Rng = .Parent
  9.             Rng.Text = Replace(Rng.Text, Chr(13) & Chr(13), Chr(13))
  10.             If Len(Rng.Text) < lineCount Then
  11.                 Rng.MoveEnd 1, -1
  12.                 Rng.Text = Replace(Rng.Text, Chr(13), vbTab)
  13.                 If Rng.ComputeStatistics(1) > 1 Then
  14.                     doc.Undo
  15.                 End If
  16.             ElseIf Len(Rng.Text) < lineCount * 2 Then
  17.                 arr = Split(Rng.Text, Chr(13))
  18.                 If Len(arr(0)) + Len(arr(1)) < lineCount - 2 And Len(arr(2)) + Len(arr(3)) < lineCount - 2 Then
  19.                     Rng.Text = arr(0) & vbTab & arr(1) & Chr(13) & arr(2) & vbTab & arr(3) & Chr(13)
  20.                     If Rng.ComputeStatistics(1) > 2 Then
  21.                         doc.Undo
  22.                     End If
  23.                 End If
  24.             End If
  25.             Rng.Move 4
  26.         Loop
  27.     End With
  28. End Sub
复制代码


拿去玩吧

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-3-12 16:45 | 显示全部楼层
xwd21 发表于 2019-3-12 15:41
是的,就是这个意思

等吧 代码审核需要时间

TA的精华主题

TA的得分主题

发表于 2019-3-13 00:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
又跟 ming 老师 学到一点!.ComputeStatistics(1) > 1,我精简不到位。.undo 从来没用过。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-13 09:03 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-3-14 07:30 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-14 11:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

大神,能不能在此基础上提再新加一些功能的要求?:1.如果选项中含有图片,就不执行选项排版操作;2.对已排版的选项,设置缩进,且让选项在一行中位置分布平均;3排序完后修改选项的字体字号和段落。

TA的精华主题

TA的得分主题

发表于 2019-3-14 14:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
您可以付费完成以上的需求
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 05:34 , Processed in 0.034948 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表