有没有一种方法可以创建一个向表中添加行并将内容从一个单元格移动到另一个单元格的循环?

时间:2019-09-10 18:42:18

标签: vba ms-word

我正在用PowerPoint创建故事板。我将PowerPoint导出到一个Word文档中,该文档创建一个表格,在幻灯片缩略图旁边的列中带有注释。我需要缩略图下的注释。我的解决方案是在第1行下添加一行,然后将内容从第1行第3列移至第2行第2列。

我拥有的代码可以正常工作,但是循环比输入要添加的每一行以及剪切和粘贴的每个单元格都要好。

Documents("Slide 1.docm").Tables(1).Rows(7).Select
Selection.InsertRowsBelow 1

Documents("Slide 1.docm").Tables(1).Rows(9).Select
Selection.InsertRowsBelow 1

Documents("Slide 1.docm").Tables(1).Cell(Row:=1, Column:=3).Select
Selection.Cut
Documents("Slide 1.docm").Tables(1).Cell(Row:=2, Column:=2).Select
Selection.Paste

Documents("Slide 1.docm").Tables(1).Cell(Row:=3, Column:=3).Select
   Selection.Cut
Documents("Slide 1.docm").Tables(1).Cell(Row:=4, Column:=2).Select
Selection.Paste

Documents("Slide 1.docm").Tables(1).Cell(Row:=5, Column:=3).Select
   Selection.Cut
Documents("Slide 1.docm").Tables(1).Cell(Row:=6, Column:=2).Select
Selection.Paste

Documents("Slide 1.docm").Tables(1).Cell(Row:=7, Column:=3).Select
   Selection.Cut
Documents("Slide 1.docm").Tables(1).Cell(Row:=8, Column:=2).Select
Selection.Paste

Documents("Slide 1.docm").Tables(1).Cell(Row:=9, Column:=3).Select
   Selection.Cut
Documents("Slide 1.docm").Tables(1).Cell(Row:=10, Column:=2).Select
Selection.Paste

End Sub

1 个答案:

答案 0 :(得分:0)

在可能的情况下,尝试使用Range对象而不是Selection。它更快,更可靠。剪切和粘贴也很慢,只有在需要保留本地格式的情况下才需要剪切和粘贴。 With语句还可以加快您的代码并消除冗余代码。

Sub MoveTableContent()
  With Documents("TableMoveData.docm").Tables(1)
    .Rows.Add BeforeRow:=.Rows(8)
    .Rows.Add BeforeRow:=.Rows(10)
    For x = 1 To .Rows.Count Step 2
      .Cell(Row:=x + 1, Column:=2).Range.Text = .Cell(Row:=x, Column:=3).Range.Text
      .Cell(Row:=x, Column:=3).Range.Text = ""
    Next x
  End With
End Sub