VBA注释临时

news/2024/7/5 21:48:50
Sub shishi() '按ABCDE为多选题定义答案;
'A.沙利度胺 B.异烟肼   C.利福平
'd.氯法齐明 E.氨苯砜
'46.各型麻风病的首选药物为(D)
'A.沙利度胺 B.异烟肼   C.利福平
'd.氯法齐明 E.氨苯砜
'45.各型麻风病的首选药物为(E)
'A.沙利度胺 B.异烟肼   C.利福平
'd.氯法齐明 E.氨苯砜
'45645
'1532131
'46.各型麻风病的首选药物为(D)Dim mt, mh, mk, oRng As Range, rg As Range, n&, m&, str$, d, rng As Range ',tSet d = CreateObject("Scripting.Dictionary")y = 4With CreateObject("vbscript.regexp").Global = True: .IgnoreCase = False: .MultiLine = True.Pattern = "^\d+.[^\r]+\(([A-E])\)\r(?:(?!^\d+.[^\r]+\((?:[A-E])\)\r).)+" '匹配题干+选项(非题干的多行,直到第二个题干前),有几个就有多少组For Each mt In .Execute(ActiveDocument.Content)y = y + 1 '这个是初始的题号;m = mt.FirstIndex: n = mt.Length45.各型麻风病的首选药物为(E)Set oRng = ActiveDocument.Range(m, m + n) 'orng为题干+选项;str = mt.submatches(0) 'str为题干后答案;.Pattern = "([A-E].)((?:(?![A-E].).)+)" '匹配ABCDE选项;For Each mh In .Execute(oRng.Text)m = mh.FirstIndex: n = mh.LengthSet rg = ActiveDocument.Range(oRng.Start + m, oRng.Start + m + n) 'rg为具体选项;Set d(Left(rg.Text, 1)) = rg '在字典内创建A与A选项内容间的对应;Nextt = d.items 'item只能有5个,对应A-E5个选项,即t(0)-t(4);Select Case y Mod 5 '是5的倍数则分配A,余数为1则分配B,其他以此类推;4为E;Case 0If str <> "A" Then.Pattern = "\(\s*[A-E]\s*\)"For Each mk In .Execute(oRng.Text)m = mk.FirstIndex: n = mk.LengthSet rng = ActiveDocument.Range(oRng.Start + m, oRng.Start + m + n) '通常二次正则查找时需要用到加两次;With rng.MoveStart 1, 1: .MoveEnd 1, -1: .Text = "A" '这个就是从括号外移动到括号内;End WithNextWith d(str) '字典直指Range对象(遥控);.MoveStart 1, 2: .MoveEnd 1, -1: s1 = .Text '起点向后移动2,末点向前移动1;End WithWith t(0) '这里写成d.itme(1)是否可行?AHK中必须写成那样;.MoveStart 1, 2: .MoveEnd 1, -1: s2 = .Text.Text = s1End Withd(str).Text = s2End If '上面就是交换两个选项内容,而选项自身不变;Case 1 '余下的都是重复性操作了,真正核心的也就是上面的代码部分了;If str <> "B" Then.Pattern = "\(\s*[A-E]\s*\)"For Each mk In .Execute(oRng.Text)m = mk.FirstIndex: n = mk.LengthSet rng = ActiveDocument.Range(oRng.Start + m, oRng.Start + m + n)With rng.MoveStart 1, 1: .MoveEnd 1, -1: .Text = "B"End WithNextWith d(str).MoveStart 1, 2: .MoveEnd 1, -1: s1 = .TextEnd WithWith t(1).MoveStart 1, 2: .MoveEnd 1, -1: s2 = .Text.Text = s1End Withd(str).Text = s2End IfCase 2If str <> "C" Then.Pattern = "\(\s*[A-E]\s*\)"For Each mk In .Execute(oRng.Text)m = mk.FirstIndex: n = mk.LengthSet rng = ActiveDocument.Range(oRng.Start + m, oRng.Start + m + n)With rng.MoveStart 1, 1: .MoveEnd 1, -1: .Text = "C"End WithNextWith d(str).MoveStart 1, 2: .MoveEnd 1, -1: s1 = .TextEnd WithWith t(2).MoveStart 1, 2: .MoveEnd 1, -1: s2 = .Text.Text = s1End Withd(str).Text = s2End IfCase 3If str <> "D" Then.Pattern = "\(\s*[A-E]\s*\)"For Each mk In .Execute(oRng.Text)m = mk.FirstIndex: n = mk.LengthSet rng = ActiveDocument.Range(oRng.Start + m, oRng.Start + m + n)With rng.MoveStart 1, 1: .MoveEnd 1, -1: .Text = "D"End WithNextWith d(str).MoveStart 1, 2: .MoveEnd 1, -1: s1 = .TextEnd WithWith t(3).MoveStart 1, 2: .MoveEnd 1, -1: s2 = .Text.Text = s1End Withd(str).Text = s2End IfCase 4If str <> "E" Then.Pattern = "\(\s*[A-E]\s*\)"For Each mk In .Execute(oRng.Text)m = mk.FirstIndex: n = mk.LengthSet rng = ActiveDocument.Range(oRng.Start + m, oRng.Start + m + n)With rng.MoveStart 1, 1: .MoveEnd 1, -1: .Text = "E"End WithNextWith d(str).MoveStart 1, 2: .MoveEnd 1, -1: s1 = .TextEnd WithWith t(4).MoveStart 1, 2: .MoveEnd 1, -1: s2 = .Text.Text = s1End Withd(str).Text = s2End IfEnd Selectd.RemoveAllNextEnd With
End Sub

  

转载于:https://www.cnblogs.com/zhanglei1371/p/9192470.html


http://lihuaxi.xjx100.cn/news/236740.html

相关文章

ABS是啥,为什么区块链可以与它完美结合?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 房地产市场在各方调控下终于进入新的平稳期&#xff0c;但租房市场近日来却是水涨船高。抛开传统的租售比概念不谈&#xff0c;今天小编想和大家谈…

预告 · Flutter Live 2018 全球同步直播

Flutter Live 2018 是 Google 在伦敦线下举办&#xff0c;并面向全球线上直播的一次 Flutter 庆祝活动。在 2018 年已经过去的这段时间里&#xff0c;Flutter 有着非常大的进展&#xff1a; 2 月底在世界移动大会 (MWC) 上宣布了第一个 Beta 版发布;5 月的 Google I/O 大会上发…

区块链+5G=智慧城市?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 智慧城市是一个非常大的产业范畴&#xff0c;同时包括面向政府的智慧治理、面向市民的智慧民生和面向产业的智慧经济三大板块&#xff0c;涵盖了智…

阿里巴巴连任 Java 全球管理组织席位

百度智能云 云生态狂欢季 热门云产品1折起>>> 11 月 23 日&#xff0c;阿里巴巴宣布连任 Java 全球管理组织 JCP 最高执行委员会委员&#xff0c;任期从 2018 年 12 月 4 号开始&#xff0c;为期两年。阿里表示&#xff0c;这意味将有更多中国开发者的声音被引入 Ja…

lvm讲解和磁盘故障案例

一&#xff1a;lvm讲解1.准备磁盘分区fdisk /deb/sdbn创建三个新分区&#xff0c;分别为1Gt改变分区类型为8e2.pvcreate /dev/sdb1yum install -y lvm [rootcentos7-1 ~]# yum install -y lvm 已加载插件&#xff1a;fastestmirror base …

一文读懂公有链、私有链、联盟链

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 区块链中公有链、私有链、联盟链都是区块链技术的一个细分&#xff0c;而技术仅仅是一种工具&#xff0c;怎么在不同的场景应用好不同的工具才是技…

Django ModelForm操作及验证

一、内容回顾 Model- 数据库操作- 验证class A(MOdel): user email pwd Form - class LoginForm(Form): email fields.EmailField() user pwd - is_valid -> 每一个字段进行正则(字段内置正则)clean_字段 -> clean(__all__) -> _post_clean - cleand_data - err…

the folder is already a source folder.

在新建的maven项目中&#xff0c;新建src/main/java时&#xff0c;提示the folder is already a source folder. 解决办法&#xff1a;右键工程&#xff0c;build path--configure build path--source&#xff0c;删除src/mian/java&#xff0c;再建src/main/java时即可。转载于…