word vba InsertRowsBelow的问题

gwolf 2009-11-02 01:45:31
For Each atable In ActiveDocument.Tables
c = atable.Rows.Count
atable.Cell(c - 2, 1).Select
If Selection.Shading.BackgroundPatternColor <> wdColorGray15 Then
atable.Cell(c, 1).Select
Selection.InsertRowsBelow 1'加上这句以后死循环了
End If
Next atable
似乎InsertRowsBelow把for each中的计数归0了,总是循环本表,不知怎么回事,怎么解决??
...全文
291 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gwolf 2009-11-02
  • 打赏
  • 举报
回复
多谢pfsx79,代码可行。
不过我更想知道为什么Selection.InsertRowsBelow 1'加上这句以后死循环了
宋翔 2009-11-02
  • 打赏
  • 举报
回复
另外,在VBA中,可以不用先选择再设置,例如oTbl.Cell(iRowCount - 2, 1).Select这句可直接改为:
oTbl.Cell(iRowCount - 2, 1).Range.Shading.BackgroundPatternColor <> wdColorGray15 Then
宋翔 2009-11-02
  • 打赏
  • 举报
回复
试试这个:
Sub test()
Dim i As Integer
Dim iTblCount As Integer
Dim iRowCount As Integer
Dim oDoc As Document
Dim oTbl As Table
Set oDoc = ActiveDocument
iTblCount = oDoc.Tables.Count
For i = 1 To iTblCount
Set oTbl = oDoc.Tables(i)
iRowCount = oTbl.Rows.Count
oTbl.Cell(iRowCount - 2, 1).Select
If Selection.Shading.BackgroundPatternColor <> wdColorGray15 Then
oTbl.Cell(iRowCount, 1).Select
Selection.InsertRowsBelow 1
End If
Next i
End Sub

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧