向下移动包含多段单元格的Word表格中的一行

时间:2013-01-14 21:31:13

标签: vba ms-word word-vba word-2010

如何可靠地向下移动Word表格中的行?
这是表格的结构。请注意,第一列和第二列都可以有多行和多段。

Rule ID         1

Logic           Date must be equal to or greater than 01-Jan-2012 

Discrepancy     Date is before 01-Jan-2012
message

Test case 1.1   Create form where Date is before 01-Jan-2012 
                Verify discrepancy message appears.
                Print form.

Test case 1.2   Create form where Date is equal to 01-Jan-2012.
                Verify no discrepancy message appears.
                Print form.

Test case 1.3   Create form where Date is after 01-Jan-2012.
                Verify no discrepancy message appears.
                Print form.

我尝试了很多方法来向下移动。

当我使用Selection.MoveDown(下面)尝试unit:=wdLine时,当第1列包含自动换行时,我遇到了问题。

Selection.MoveDown unit:=wdLine, Count:=1, Extend:=wdMove

当我使用Selection.MoveDown(下方)尝试unit:=wdParagraph时,当第2列包含多个段落时,我遇到了问题。

Selection.MoveDown unit:=wdParagraph, Count:=3 

unit:=wdRow似乎不是Selection.MoveDown的有效参数 Selection.Cells(1).RowIndex是只读参数

有没有人知道一个简单的方法,一次一行地向下移动表格,既可以处理第1列中的单词换行,也可以处理第2列中的多个段落?

2 个答案:

答案 0 :(得分:3)

尝试这样的事情。它是一种通用算法,用于循环遍历Word文档中所有表的每一行和每列。根据需要进行修改(未经测试的代码):

Sub ModifyAllTables()
  Dim oTbl As Table
  Dim oRow As Row
  Dim oRng As Range
  For Each oTbl In ActiveDocument.Tables
    For Each oRow In oTbl.Rows
      ' Select the cell in column 2.
      Set oRng = oRow.Cells(2).Range
      ' and do something with it...
      'e.g. oRng.TypeText "modified"
    Next
  Next
End Sub

答案 1 :(得分:2)

Sub NextRow()

    Dim c As Long, r As Long

    With Selection
        'ignore if not in table
        If .Information(wdWithInTable) Then

            c = .Columns(1).Index
            r = .Rows(1).Index

            If .Rows(1).Parent.Rows.Count >= r + 1 Then
                .Rows(1).Parent.Rows(r + 1).Cells(c).Range.Select
            End If
        End If
    End With

End Sub