ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]对selection的帮助

[复制链接]

TA的精华主题

TA的得分主题

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

请问版主和各位大虾:

在selection.information中可以得到所选内容所处的起始行列以及结束的页码,是否可以知道所选内容的开始页码和结束位置的行列值呢?

谢谢!

TA的精华主题

TA的得分主题

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

既然这样,那么当选中内容为一个字符时,开始=结尾、结尾=开始。编程中使用这种极端情况并不少见,比如判断是否为空文档:

IF 开始=结尾 AND 结尾=开始 THEN MSGBOX "空文档"

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-3-31 21:13 | 显示全部楼层

感谢2楼的回复。不过要说明:

1 selection的内容不为空,同时至少大于一个字符,甚至需要跨页。

2 即使选中的内容为一个字符,那么开始<>结尾。

TA的精华主题

TA的得分主题

发表于 2005-4-1 06:09 | 显示全部楼层

你以SELECTION为关键字,搜索一下回复贴子.很多贴子中,都有相似的答案.

简单地说,就是将一段SELECTION对象分解为两个RANGE对象,一个为SELECTIO对象的始点,一个为SELECTION的终点,然后分别使用RANGE对象的INFORMATION属性,获得所在页的页码和所在行的位置.

除非SELECTION.TYPE属性为wdSelectionIP(即为一个插入点),否则,END始终大于START.

如果你对以上问题,还不能理解,我再做个实例

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-1 09:57 | 显示全部楼层
感谢版主的提示,如能再提供一个实例,将不胜感谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-1 11:14 | 显示全部楼层

是否设置一个range=activedocument.range(start:=selection.start,end:=selection.start+1)

另一个range=activedocument.range(start:=selection.end-1,end:=selection.end)

然后通过information来得到?

TA的精华主题

TA的得分主题

发表于 2005-4-1 16:31 | 显示全部楼层

请参:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-4-1 16:32:54 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Option Explicit Sub Example() Dim StartRange As Range, EndRange As Range With Selection If .Type = wdSelectionIP Then MsgBox "您没有选中文本!", vbOKOnly + vbInformation: Exit Sub Set StartRange = ActiveDocument.Range(.Start, .Start) Set EndRange = ActiveDocument.Range(.End, .End) If VBA.Right(.Text, 1) = Chr(13) Then Set EndRange = ActiveDocument.Range(.End - 1, .End - 1) MsgBox "您选定区域的起始页码为" & StartRange.Information(wdActiveEndPageNumber) & vbCrLf _ & "您选定区域的起始行号为" & StartRange.Information(wdFirstCharacterLineNumber) & vbCrLf _ & "您选定区域的起始列数为" & StartRange.Information(wdFirstCharacterColumnNumber) & vbCrLf _ & "您选定区域的结束页码为" & EndRange.Information(wdActiveEndPageNumber) & vbCrLf _ & "您选定区域的结束行号为" & EndRange.Information(wdFirstCharacterLineNumber) & vbCrLf _ & "您选定区域的结束列数为" & EndRange.Information(wdFirstCharacterColumnNumber), vbInformation End With End Sub '----------------------

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-4-1 17:02 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 01:52 , Processed in 0.039627 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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