2013-03-23 24 views
3

我在MS单词中有一个3 X 3(称为tableA)表格。第(2,2)个单元格是一个拆分单元格(拆分为2X2表格)。 如何循环遍历表A中的所有单元格。如何在单词表中分割单元格中的所有单元格循环

Dim strCellText As String 
Dim uResp As String 
Dim Row As Integer 
Dim Col As Integer 

Dim itable As Table 


For Each itable In ThisDocument.Tables 

    uResp = "" 

    For Row = 1 To itable.Rows.Count 

     For Col = 1 To itable.Columns.Count 

      strCellText = itable.Cell(Row, Col).Range.Text 
      uResp = uResp & Trim(strCellText)     

     Next 

    Next 

    MsgBox uResp 
Next 

这个节目给编译错误:

Run time error 5914 
The requested member of the collection does not exist 

我如何可以遍历虽然已经分裂细胞的表的单元格。

+0

哪条线你有这个错误?一般来说,你的代码是正确的,这意味着它会遍历所有单元格。所以,你的问题在别的地方,因为我没有任何错误处理你的代码。 –

+0

@KazJaw你有没有试过用拆分单元格的表格。 – Vinod

+0

对不起,我错过了这一点,所以我再次检查... –

回答

3

你应该假定每一行都有最大可能的列号。在你的情况下,将是4.要遍历每个单元格,我建议在第一次循环开始之前设置On Error Resume Next。比你的内环内试试这个代码:

  strCellText = itable.cell(Row, Col).Range.Text 

      If Err.Number = 0 Then 
       uResp = uResp & Trim(strCellText) 
       Debug.Print Row, Col, strCellText 
      Else 
       Err.Clear 
      End If 
+0

+1,因为它也解决了我(谢谢!);但这看起来并不是最好的选择。对正常的程序流使用错误处理似乎是'呃'。真的没有更好的办法吗? –

+1

@JaminGrey,你想在你的情况下做什么?循环遍历表中的所有单元格,而不管它们是否被拆分或合并? –

+0

你提出的方法工作正常,但(可能来自我的C++背景),使用正常和期望的函数流的错误处理似乎很难。我对VBA没有经验,而且我也没有批评你的正确解决方案,只是惊讶地发表VBA没有提供更清洁的东西(自然地,“更清洁”被我个人对过去语言的看法所左右用过的)。 =)将它拼凑成新的语言冲击。 –

1

我碰到这种情况时,我试图从(有时畸形)表中的数据。这是我如何处理它:如果单元格合并

检查列

For each row in table.rows 
    if row.cells.count < expectedRows 
    'You know you are lacking rows 
    else 
    'Normal processing 
    end if 
Next 

,或者如果你想所有的数据无论如何

For each row in table.rows 
    For each cell in row.cells 
    'Process individual cells 
    Next 
Next 

没有这些工作通过每个细胞去数垂直。

相关问题