比较MS Word表格列中的值,合并单元格并删除重复值

问题描述 投票:0回答:1

我最初在2017年5月在Microsoft社区中提出了这个问题,我曾使用此代码修改表结构:

Sub TableDateCleaner()
  Application.ScreenUpdating = False
  Dim r As Long, bFit As Boolean
  With ActiveDocument.Tables(2)
    bFit = .AllowAutoFit
    .AllowAutoFit = False
    For r = .Rows.Count To 2 Step -1
      If Trim(Split(.Cell(r, 1).Range.Text, vbCr)(0)) = _
         Trim(Split(.Cell(r - 1, 1).Range.Text, vbCr)(0)) Then
           .Cell(r, 1).Range.Delete
           .Cell(r, 1).Merge .Cell(r - 1, 1)
           .Cell(r, 2).Merge .Cell(r - 1, 2)
      End If
    Next
    With .Range.Find
      .ClearFormatting
      .Replacement.ClearFormatting
      .Text = "^p"
      .Replacement.Text = ", "
      .Format = False
      .Forward = True
      .Wrap = wdFindStop
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
      .Execute Replace:=wdReplaceAll
    End With
    AllowAutoFit = bFit
    .Rows.HeightRule = wdRowHeightAuto
  End With
  Application.ScreenUpdating = True
  Call LowerCaseAfterComma 'Call next Macro so formatting done in one process
End Sub

但是,我的客户端现在使用不同的软件来生成多个表,这个宏最初用于第二个命名表,因此ActiveDocument.Tables(2)。将新表标识为第6个命名表后,我修改了代码并将其替换为ActiveDocument.Tables(6)。

虽然我将宏修改为此效果,但我现在得到'运行时错误5941集合的请求成员不存在',并且从'如果修剪....'开始的代码以黄色突出显示错误。所以,我假设它正在寻找一个不再存在的ActiveDocument.Tables中的对象,这听起来很奇怪,但我不知道那是什么。

我只是一名兼职编码员,所以我想了解一下我可能出错的地方。我正在使用Word 2016。

ms-word word-vba
1个回答
0
投票

如果您指定了正确的表索引(例如6而不是2)并且表结构相同(即每行两列),则无论您关注哪个表,代码都应该完全相同。除了你的代码缺乏结构,我能看到的唯一错误是AllowAutoFit = bFit缺少开始句点(即.AllowAutoFit = bFit)。理想情况下,在Application.ScreenUpdating = True之前,您还有Call LowerCaseAfterComma。

© www.soinside.com 2019 - 2024. All rights reserved.