标签:Word VBA
本示例演示如何使用代码删除已排序表中第1列内容相同的行,代码如下:
代码语言:javascript复制Sub DeleteTableDuplicateRows()
Dim objTable As Table
Dim objRow As Range
Dim objNextRow As Range
Dim i As Long
'指定想要操作的表格
Set objTable = ActiveDocument.Tables(1)
'设置对象变量为第一行
Set objRow = objTable.Rows(1).Range
'关闭屏幕刷新
Application.ScreenUpdating = False
For i = 1 To objTable.Rows.Count - 1
'设置对象变量为下一行
Set objNextRow = objRow.Next(wdRow)
'比较表格第1列的文本
If objRow.Cells(1).Range = objNextRow.Cells(1).Range Then
'如果相同则删除第2行
objNextRow.Rows(1).Delete
Else
'如果不相同则移到下一行
Set objRow = objNextRow
End If
Next i
'打开屏幕更新
Application.ScreenUpdating = True
End Sub
上面的代码区分大小写,即第一列中内容相同但大小写不同不会被删除。下面的代码操作时不区分大小写:
代码语言:javascript复制Sub DeleteTableDuplicateRows1()
Dim objTable As Table
Dim objRow As Range
Dim objNextRow As Range
Dim i As Long
Dim strCell As String
Dim strCellNext As String
'指定想要操作的表格
Set objTable = ActiveDocument.Tables(1)
'设置对象变量为第一行
Set objRow = objTable.Rows(1).Range
'关闭屏幕刷新
Application.ScreenUpdating = False
For i = 1 To objTable.Rows.Count - 1
'设置对象变量为下一行
Set objNextRow = objRow.Next(wdRow)
strCell = LCase(objRow.Cells(1).Range.Text)
strCellNext = LCase(objNextRow.Cells(1).Range.Text)
If strCell = strCellNext Then
objNextRow.Rows(1).Delete
Else
Set objRow = objNextRow
End If
Next i
'打开屏幕更新
Application.ScreenUpdating = True
End Sub
本示例演示了如何使用VBA代码在Word表格的单元格中移动的方法。那么,对于没有排序过的表格,如何使用VBA删除重复行呢?