ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 用VBA把下划线文字复制出来作为答案,并将下划线处理成填空

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-8-10 17:28 | 显示全部楼层 |阅读模式
本帖最后由 过客fppt 于 2023-8-13 11:22 编辑

大家好,因为经常要把下划线文字复制出来作为答案,并将下划线处理成填空,所以想用VBA弄一个功能,要求如下:
1、如果选中前两个知识点,运行代码,则横线上的文字或者公式会被复制出来,并且在这选中区域下添加一行空白。填上答案并且把复制的知识点粘贴出来。
2、把刚才选中区域的横线处理成空的横线,并且横线的长度尽量跟原来知识点文字中的长度相同。
3、选中后面两个知识点,可以达到同样的效果
如下图所示:
image.png

目前在batmanbbs老师的指导下能做到将下划线的内容复制到选中段落的末端了。但是如何将下划线的内容填充成同样长度的空格,下划线还需要各位指引一下,谢谢

把下划线文字复制出来作为答案,并将下划线处理成填空.zip

16.6 KB, 下载次数: 21

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-10 18:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub 查找并选中所选范围内的下划线()
  2.     Dim dw As Range
  3.     Set dw = Selection.Range
  4.     ActiveDocument.DeleteAllEditableRanges wdEditorEveryone
  5.     With dw.Find
  6.         .Font.Underline = wdUnderlineSingle

  7.         Do While .Execute = True
  8.             dw.Editors.Add wdEditorEveryone
  9.         Loop
  10.     End With
  11.     ActiveDocument.SelectAllEditableRanges wdEditorEveryone
  12.     ActiveDocument.DeleteAllEditableRanges wdEditorEveryone
  13. End Sub
复制代码

目前我想用上面这段代码,选中我所选的范围的下划线部分,但是运行后会选中文档中全部的下划线

TA的精华主题

TA的得分主题

发表于 2023-8-10 19:20 | 显示全部楼层
第9句前添加一句判断是否超过选区范围
image.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-10 21:25 | 显示全部楼层
batmanbbs 发表于 2023-8-10 19:20
第9句前添加一句判断是否超过选区范围

感谢batmanbbs老师,不过有点想不明白,为什么是判断我所选中区域的起始位置大于当前所选中的末位置呢?

按照我目的理解的话,如果加这一句判断,我觉得应该判断:当前选中区域的开始位置大于我所选中的末位置时,退出循环。

现在还没有电脑验证这个对不对,非常感谢!

TA的精华主题

TA的得分主题

发表于 2023-8-10 21:37 | 显示全部楼层
过客fppt 发表于 2023-8-10 21:25
感谢batmanbbs老师,不过有点想不明白,为什么是判断我所选中区域的起始位置大于当前所选中的末位置呢?
...

你可以用F8单步执行进行调试,能够看到在dw选区中搜索找到第一个目标的后,dw选区变化成第一个找到目标的范围了,再次查找时会变成从光标位置查找到文档结束位置,不再是原来SELECTION的范围了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-10 21:58 | 显示全部楼层
batmanbbs 发表于 2023-8-10 21:37
你可以用F8单步执行进行调试,能够看到在dw选区中搜索找到第一个目标的后,dw选区变化成第一个找到目标的 ...

原来如此,那我明天试一下。我本来以为设置了dw之后,只在这个范围内查找。谢谢啦!

TA的精华主题

TA的得分主题

发表于 2023-8-10 22:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 batmanbbs 于 2023-8-10 22:32 编辑
过客fppt 发表于 2023-8-10 21:58
原来如此,那我明天试一下。我本来以为设置了dw之后,只在这个范围内查找。谢谢啦!

除此之外,你还可以用SETRANGE重新设置查询区域(其实更推荐使用这个,但我曾经遇到过在表格中使用SETRANGE好像会有问题)

image.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-11 09:18 | 显示全部楼层
batmanbbs 发表于 2023-8-10 21:37
你可以用F8单步执行进行调试,能够看到在dw选区中搜索找到第一个目标的后,dw选区变化成第一个找到目标的 ...

果然是这样。今天用立即窗口把这些起点和终点都打印出来。原来dw的起点,终点一直在发生变化的。不变的是开始所选区域的起点和终点。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-18 06:05 , Processed in 0.041439 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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