ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何通过查找、替换的方式将两个选择后面的内容进行调换?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-5-31 14:06 | 显示全部楼层 |阅读模式
如何通过查找、替换的方式将两个选择后面的内容进行调换?

如何将两个选项的位置通过查找替换的方式来调整?.zip

6.38 KB, 下载次数: 13

TA的精华主题

TA的得分主题

发表于 2019-6-3 16:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主,我觉得像这种 ABCD几种选项互换的情况,用 VBA 纯属大材小用,不如手工;另外,一般选项也没有必要互换吧,固定顺序即可(要想互换,得手工键入 6 组小括号,想想这样做麻烦不麻烦呢?)。

TA的精华主题

TA的得分主题

发表于 2019-6-3 18:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以前见过一个帖子,随机调整答案,一时找不到了
一个问题,如果写代码解决的时间超过手工解决的时间,就没必要了

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-6-3 23:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
小花鹿 老师:随机调整答案选项是 杜老师 写的代码。有时 杜老师 写的代码太高级,根本看不懂。

TA的精华主题

TA的得分主题

发表于 2019-6-4 21:16 | 显示全部楼层
  1. Sub test选项互换()
  2.     Dim i$
  3.     With ActiveDocument
  4.         .Content.InsertAfter Text:=vbCr
  5.         .Select
  6.     End With
  7.     CommandBars.FindControl(ID:=122).Execute
  8.     CommandBars.FindControl(ID:=123).Execute
  9.     With Selection
  10.         .HomeKey Unit:=wdStory
  11.         Do
  12.             If .Paragraphs(1).Range Like "A.*" Then
  13.                 .Expand 4
  14.                 If MsgBox("是否处理本段?", 4 + 48) = vbNo Then GoTo sk
  15. sp:
  16.                 i = MsgBox("<是>:[A-B]    <否>:[A-C]    <取消>:[B-C]", 3 + 48, "请选择互换内容!")
  17.                 If i = vbYes Then
  18.                     .Find.Execute "(<A.)(*)([  ^s^t]{1,})(B.)(*)([  ^s^t]{1,})", , , 1, , , , , , "\1\5\3\4\2\6", 1
  19.                 ElseIf i = vbNo Then
  20.                     .Find.Execute "(<A.)(*)([  ^s^t]{1,}*)(C.)(*)(^13)", , , 1, , , , , , "\1\5\3\4\2\6", 1
  21.                 Else
  22.                     .Find.Execute "(<A.*)(B.)(*)([  ^s^t]{1,})(C.)(*)(^13)", , , 1, , , , , , "\1\2\6\4\5\3\7", 1
  23.                 End If
  24.                 .Expand 4
  25.                 If MsgBox("<是>:下一段    <否>:本段", 4 + 48, "处理段落") = vbYes Then GoTo sk Else GoTo sp
  26.             Else
  27. sk:
  28.                 .Move 4
  29.             End If
  30.             If .Paragraphs(1).Range.End = ActiveDocument.Content.End Then Exit Do
  31.         Loop
  32.     End With
  33.     ActiveDocument.Paragraphs.Last.Range.Delete
  34. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-6 11:02 | 显示全部楼层

您好,非常感谢您的回复。这个代码非常符合预期,只是,如果选项有A.B.C.D.四个或A.B.C.D.E.五个的话,不知道分别该怎样修改代码呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-6 11:02 | 显示全部楼层
小花鹿 发表于 2019-6-3 18:01
以前见过一个帖子,随机调整答案,一时找不到了
一个问题,如果写代码解决的时间超过手工解决的时间,就没 ...

谢谢您的关注!

TA的精华主题

TA的得分主题

发表于 2019-6-7 00:40 | 显示全部楼层
楼主,你好! 代码仅对于 3 个选项有效,因为信息框 Msgbox 函数通常情况下只有 3 个可用按钮;如果有 4 个或 5 个甚至更多选项要处理的话,就需要自定义窗体了,但那样做的话,比较占用内存。还有,你确实需要经常反复调整答案选项吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 21:08 , Processed in 0.033593 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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