2013-03-23 49 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 

沒有這些工作通過每個細胞去數垂直。

相關問題