找回密码
 立即注册
搜索

怎样用VBA代码判断当前选中的内容是否在同一行?

7
回复
1130
查看
[复制链接]

5

主题

7

帖子

56

幻币

江湖少侠

Rank: 2

积分
137
QQ
2018-12-18 20:57:06 显示全部楼层 |阅读模式
怎样用VBA代码判断当前选中的内容是否在同一行?
PPT学习论坛
回复

使用道具 举报

4

主题

10

帖子

13

幻币

一流武者

Rank: 3Rank: 3

积分
201
QQ
2018-12-18 21:57:16 显示全部楼层
PPT中,编辑状态下,怎样用VBA代码判断当前选中的内容是否在同一行?
PPT学习论坛
回复 支持 反对

使用道具 举报

2

主题

8

帖子

25

幻币

江湖少侠

Rank: 2

积分
77
QQ
2018-12-18 22:06:09 显示全部楼层
文本框中,硬回车为段落。因为文本框的长短和文字的大小,有的段落看似为一行或多行。
实际上在文本框中,行和段是同一个概念,眼睛看到的多行,其实还是一行Lines(或一段paragraphs)。所以你的问题可以认为:选中文字为一段还是两段。
你可以从这几方面入手:
1、选中文字所在段的长度,2、起始字选中文字长度,3、设定一个公式判断,4、得出结论。
好像第一个问题不太好解,后面的比较简单。
可能有用的部分代码
s = ActiveWindow.Selection.TextRange.Start
l = ActiveWindow.Selection.TextRange.Length
t = ActiveWindow.Selection.TextRange.Text
我觉得好像用正则能解决。
PPT学习论坛
回复 支持 反对

使用道具 举报

4

主题

10

帖子

72

幻币

江湖少侠

Rank: 2

积分
177
QQ
2018-12-18 22:37:30 显示全部楼层
终于找到方法了,代码还不成熟。
Set rng1 = ActiveWindow.Selection.TextRange.Lines
然后,判断rng1.Item(2).Text有没有,一行只有rng1.Item(1),两行才有rng1.Item(2),同理三行就有rng1.Item(3)……如果没有rng1.Item(2),说明只有一行,否则,就是多行。大概就是这个意思。
如果做好了,我学习下你的代码。
PPT学习论坛
回复 支持 反对

使用道具 举报

2

主题

6

帖子

36

幻币

一流武者

Rank: 3Rank: 3

积分
269
2018-12-18 23:06:19 显示全部楼层
行了,能通过。
    Sub test5()
        On Error Resume Next
        c1 = ActiveWindow.Selection.TextRange.Lines.count
        If c1 > 1 Then
            MsgBox "选中文字不在一行"
        Else
            MsgBox "在一行"
        End If
    End Sub

复制代码

测试下。
PPT学习论坛
回复 支持 反对

使用道具 举报

4

主题

14

帖子

81

幻币

一流武者

Rank: 3Rank: 3

积分
326
QQ
2018-12-18 23:17:15 显示全部楼层
谢谢你的大力帮助
PPT学习论坛
回复 支持 反对

使用道具 举报

6

主题

12

帖子

13

幻币

江湖少侠

Rank: 2

积分
92
QQ
2018-12-18 23:34:20 显示全部楼层
也请你帮助我下,ppt英文双引号转中文(),能替换一两组,不能替换所有,应该是循环里出现的问题,麻烦,谢谢。
PPT学习论坛
回复 支持 反对

使用道具 举报

2

主题

8

帖子

96

幻币

一流武者

Rank: 3Rank: 3

积分
299
QQ
2018-12-19 00:43:44 显示全部楼层
正需要,下载试用,感谢老师无私分享!
PPT学习论坛
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册