VBA Excel如何获取每个单词表中的表号

rta7y2nd  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(152)

我有3个空单元格表的Word模板。代码完成后,我检查是否有每个表中的空单元格,如果表中包含空单元格,则代码删除该表,但如果表中有数据,则我需要在该表上方插入文本。3个表中每一个都有自己的特定文本。因此,对于word.document.tables(1),我需要输入文本“AAA”,对于word.document.tables(2),输入文本“BBB”...
问题是,如果我删除一个表,如果是空的,那么Word文档有2个表,我需要删除表(3),所以我得到错误,表(3)不存在。
我怎样才能得到表计数在每个循环?
谢谢!

Dim tbl As Table
For Each tbl In wDoc.Tables
            If Len(tbl.Cell(1, 1).Range.Text) = 2 Then
                tbl.Delete
            Else
                wDoc.tbl.Range.Collapse wdCollapseStart
                wDoc.tbl.Range.Move wdParagraph, -1
                    If wDoc.Tables(b) = 1 Then
                        wDoc.Tables(b).Range.InsertBefore "AAA"
                    ElseIf wDoc.Tables(b) = 2 Then
                        wDoc.Tables(b).Range.InsertBefore "BBB"
                    ElseIf wDoc.Tables(b) = 3 Then
                        wDoc.Tables(b).Range.InsertBefore "CCC"
                    End If
            End If
Next tbl
wb1gzix0

wb1gzix01#

使用For循环从Tables集合的末尾开始循环例如

Dim tbl As Table, b As Long
For b = wDoc.Tables.Count To 1 Step -1
    Set tbl = wDoc.Tables.Item(b)

    If Len(tbl.Cell(1, 1).Range.Text) = 2 Then
        tbl.Delete
    Else
        tbl.Range.Collapse wdCollapseStart
        tbl.Range.Move wdParagraph, -1
        If b = 1 Then
            tbl.Range.InsertBefore "AAA"
        ElseIf b = 2 Then
            tbl.Range.InsertBefore "BBB"
        ElseIf b = 3 Then
            tbl.Range.InsertBefore "CCC"
        End If
    End If
Next b

然后在b中有Table索引号,在tbl中有Table对象

相关问题