wrod中如何获取选中的表格的索引号?

慕容若冰 2017-07-08 10:42:20
在一个文档里面有多个表格,我想获取鼠标选中的表格的索引号,即 ActiveDocument.Tables(i)中的i
...全文
607 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
脆皮大雪糕 2017-07-11
  • 打赏
  • 举报
回复
觉得赵老师应追赶一下潮流该研究一下人工智能,根据问题自动贴比较能搭得上楼主问题边的东西。蹭分也要让人心服口服嘛
舉杯邀明月 2017-07-11
  • 打赏
  • 举报
回复
引用 10 楼 chewinggum 的回复:
觉得赵老师应追赶一下潮流该研究一下人工智能,根据问题自动贴比较能搭得上楼主问题边的东西。蹭分也要让人心服口服嘛
你觉得它能“研究”得有一定进展? 是不是太高估他了……
赵4老师 2017-07-10
  • 打赏
  • 举报
回复
注释掉所有On Error Resume Next语句,在VBA IDE中运行, 出错后点击调试,光标会停在出错的那条语句处, 或者 事先在怀疑可能有逻辑错误的语句处设置断点,运行经过断点时中断, 此时可以在立即窗口中使用 ?变量名 或 ?函数名(函数参数) 或 过程名(参数) 辅助调试。
舉杯邀明月 2017-07-09
  • 打赏
  • 举报
回复
引用 2 楼 chewinggum 的回复:
搞定,结贴给分吧

Sub test()
    Dim t1 As Object
    Dim t2 As Object
    Dim i As Integer

    
    If Selection.Information(wdWithInTable) = True Then
        Set t1 = Selection.Tables(1)
        For i = 1 To ActiveDocument.Tables.Count
            Set t2 = ActiveDocument.Tables(i)
            If t1 = t2 Then
                MsgBox "这是tables(" & i & ")"
            End If
        Next
    Else
        MsgBox "光标不在表内"
    End If
End Sub
经我刚才试验,可能会有“张冠李戴”的问题。 测试方法如下: 1. 新建一个Word文档,然后随便插入一个表格(任意大小都行,比如3列×2行的); 2. 选定刚才的表格,Ctrl+C,然后Ctrl+V两次(随意,1次也行的),现在文档中是“3个表格”了。   把”光标“定在其中的任意一个表格内。 3. Alt+F11打开VBE,插入一个“标准模块”,粘贴上面的代码。   运行,可以看到:有多少个表格,就会MsgBox多少次,跟光标在哪个表格内无关。 当然我是“故意捣乱”的…………你们都可以忽略我的回复。
脆皮大雪糕 2017-07-09
  • 打赏
  • 举报
回复
有结论了,通过设定表格的文字环绕啥啥啥的,可以把两个表格横向平行放置,但是两个表格的range end属性值不一样。 所以,按6楼的,去掉两个表对象的直接比对貌似到目前为止也没发现有问题。
脆皮大雪糕 2017-07-09
  • 打赏
  • 举报
回复
引用 6 楼 Chen8013 的回复:
[quote=引用 5 楼 chewinggum 的回复:] 修订一下,加个条件

Sub test()
    Dim t1 As Object
    Dim t2 As Object
    Dim i As Integer

    
    If Selection.Information(wdWithInTable) = True Then
        Set t1 = Selection.Tables(1)
        For i = 1 To ActiveDocument.Tables.Count
            Set t2 = ActiveDocument.Tables(i)
            If t1 = t2 And t1.Range.End = t2.Range.End Then
                MsgBox "这是tables(" & i & ")"
            End If
        Next
    Else
        MsgBox "光标不在表内"
    End If
End Sub
厉害! 不过其实不用“加条件”,代码第11行只要这样就行了: If t1.Range.End = t2.Range.End Then [/quote] 这不是不想删掉原来的东西么 其实我在考虑,两个表格可以横向平行放么?
舉杯邀明月 2017-07-09
  • 打赏
  • 举报
回复
引用 5 楼 chewinggum 的回复:
修订一下,加个条件

Sub test()
    Dim t1 As Object
    Dim t2 As Object
    Dim i As Integer

    
    If Selection.Information(wdWithInTable) = True Then
        Set t1 = Selection.Tables(1)
        For i = 1 To ActiveDocument.Tables.Count
            Set t2 = ActiveDocument.Tables(i)
            If t1 = t2 And t1.Range.End = t2.Range.End Then
                MsgBox "这是tables(" & i & ")"
            End If
        Next
    Else
        MsgBox "光标不在表内"
    End If
End Sub
厉害! 不过其实不用“加条件”,代码第11行只要这样就行了: If t1.Range.End = t2.Range.End Then
脆皮大雪糕 2017-07-09
  • 打赏
  • 举报
回复
修订一下,加个条件

Sub test()
    Dim t1 As Object
    Dim t2 As Object
    Dim i As Integer

    
    If Selection.Information(wdWithInTable) = True Then
        Set t1 = Selection.Tables(1)
        For i = 1 To ActiveDocument.Tables.Count
            Set t2 = ActiveDocument.Tables(i)
            If t1 = t2 And t1.Range.End = t2.Range.End Then
                MsgBox "这是tables(" & i & ")"
            End If
        Next
    Else
        MsgBox "光标不在表内"
    End If
End Sub
脆皮大雪糕 2017-07-09
  • 打赏
  • 举报
回复
引用 3 楼 Chen8013 的回复:
[quote=引用 2 楼 chewinggum 的回复:] 搞定,结贴给分吧

Sub test()
    Dim t1 As Object
    Dim t2 As Object
    Dim i As Integer

    
    If Selection.Information(wdWithInTable) = True Then
        Set t1 = Selection.Tables(1)
        For i = 1 To ActiveDocument.Tables.Count
            Set t2 = ActiveDocument.Tables(i)
            If t1 = t2 Then
                MsgBox "这是tables(" & i & ")"
            End If
        Next
    Else
        MsgBox "光标不在表内"
    End If
End Sub
经我刚才试验,可能会有“张冠李戴”的问题。 测试方法如下: 1. 新建一个Word文档,然后随便插入一个表格(任意大小都行,比如3列×2行的); 2. 选定刚才的表格,Ctrl+C,然后Ctrl+V两次(随意,1次也行的),现在文档中是“3个表格”了。   把”光标“定在其中的任意一个表格内。 3. Alt+F11打开VBE,插入一个“标准模块”,粘贴上面的代码。   运行,可以看到:有多少个表格,就会MsgBox多少次,跟光标在哪个表格内无关。 当然我是“故意捣乱”的…………你们都可以忽略我的回复。 [/quote] 好吧,没测试这个情况
脆皮大雪糕 2017-07-08
  • 打赏
  • 举报
回复
搞定,结贴给分吧

Sub test()
    Dim t1 As Object
    Dim t2 As Object
    Dim i As Integer

    
    If Selection.Information(wdWithInTable) = True Then
        Set t1 = Selection.Tables(1)
        For i = 1 To ActiveDocument.Tables.Count
            Set t2 = ActiveDocument.Tables(i)
            If t1 = t2 Then
                MsgBox "这是tables(" & i & ")"
            End If
        Next
    Else
        MsgBox "光标不在表内"
    End If
End Sub
脆皮大雪糕 2017-07-08
  • 打赏
  • 举报
回复
If Selection.Information(wdWithInTable) = True Then Selection.Tables(1).Select 通过infomation 判断光标是否在table里面 如果得到true 那么 selection.table(1)就是这个表对象。至于他在整个document的tables里面的索引值 我暂时也不知道怎么获得。

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧