无名指 发表于 2018-12-18 20:57:06

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

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

lee8235248 发表于 2018-12-18 21:57:16

PPT中,编辑状态下,怎样用VBA代码判断当前选中的内容是否在同一行?

永远的科学 发表于 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
我觉得好像用正则能解决。

chnyw1111 发表于 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),说明只有一行,否则,就是多行。大概就是这个意思。
如果做好了,我学习下你的代码。

mentor371 发表于 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

复制代码

测试下。

冰雨xu 发表于 2018-12-18 23:17:15

谢谢你的大力帮助

dynamosd 发表于 2018-12-18 23:34:20

也请你帮助我下,ppt英文双引号转中文(),能替换一两组,不能替换所有,应该是循环里出现的问题,麻烦,谢谢。

ericjones 发表于 2018-12-19 00:43:44

正需要,下载试用,感谢老师无私分享!
页: [1]
查看完整版本: 怎样用VBA代码判断当前选中的内容是否在同一行?