簡體   English   中英

使用MS Word VBA宏合並表中的單元格

[英]Merge cells in table with ms word VBA macro

我想與vba合並在一個單元中,但不起作用。

mycode:

Sub merge()
Dim x As Integer, i As Integer
x = ActiveDocument.Tables(1).Rows.Count
    With ActiveDocument.Tables(1)
      For i = 1 To x + 1
            If .Cell(i, 2).Range.Text = "" Then
            .Cell(Row:=i, Column:=2).merge _
            MergeTo:=.Cell(Row:=i, Column:=3)
            .Borders.Enable = False
            End If      
      Next i
    End With
End Sub

在文檔中,我有一個表(五行和三列)。

對於excel VBA代碼編寫器,這是一個常見的概念性問題,我們過去將空白單元格視為空(“”)。 但是實際上一個看似空白的Word表單元格包含兩個不可見字符(至少在word 2007中),即chr(13)Chr(7) 可以用簡單的語句進行測試,例如

MsgBox Len(.Cell(1, 1).Range.Text)
MsgBox Asc(Right(.Cell(1, 1).Range.Text, 1))
MsgBox Asc(Left(.Cell(1, 1).Range.Text, 1))

為了使您的代碼正常工作,可以將其修改為類似

Sub merge()
Dim x As Integer, i As Integer, S As String
x = ActiveDocument.Tables(1).Rows.Count
    With ActiveDocument.Tables(1)
      For i = 1 To x
      S = .Cell(i, 2).Range.Text
      S = Replace(S, Chr(13), "")
      S = Replace(S, Chr(7), "")
            If S = "" Then
            .Cell(Row:=i, Column:=2).merge _
            MergeTo:=.Cell(Row:=i, Column:=3)
            .Borders.Enable = False
            End If
      Next i
    End With
End Sub

或測試行可以修改為

If Len(.Cell(i, 2).Range.Text) = 2 Then

也無法理解為什么在您的代碼中您要迭代到ActiveDocument.Tables(1).Rows.Count+1所以對於測試,我僅For i = 1 To x

嘗試更改:

If .Cell(i, 2).Range.Text = "" Then

至:

If Split(.Cell(i, 2).Range.Text,vbCr)(0) = "" Then

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM