【问题标题】:How to write a loop to format tables differently in a word document?如何编写循环以在 Word 文档中以不同方式格式化表格?
【发布时间】:2016-03-02 16:31:44
【问题描述】:

我一直在尝试找到一种代码来以特定方式格式化 word 文档的第一个表格,然后循环遍历其余表格以另一种方式格式化它们。我找到了一个正确循环所有表的代码,但还没有找到一种方法来排除第一个表以便对其进行不同的格式化。这是适用于所有表格的代码

Sub Change_All_Tables_Formating()
Dim oTbl As Word.Table
Dim oCell As Word.Cell
  For Each oTbl In ActiveDocument.Tables
  For Each oCell In oTbl.Range.Cells
  oCell.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
  Next oCell
  oTbl.Rows(1).Shading.BackgroundPatternColorIndex = wdGray25
  oTbl.Rows(1).Range.Bold = True
  Next oTbl
End Sub

这是我无法正确调整第一个表格格式的代码。它需要从第一个表格中完全去除阴影,并对word文档中其余表格的标题进行阴影处理。我觉得如果我能学会如何做到这一点,我将能够调整任何我想要的表格并单独格式化它们。每个文档的表格数量不同,但第一个表格始终相同。任何人都可以提供任何帮助,我将不胜感激。

Sub Change_Tables_Formating()
 Dim oTbl As Word.Table
 Dim oCell As Word.Cell
 Set oTbl = ActiveDocument.Tables
 Set oTblcnt = wdDoc.Tables.Count
    For oTbl = 0 To 1
      For Each oCell In oTbl.Range.Cells
       oCell.Range.ParagraphFormat.Alignment = wdAlignParagraphLeft
      Next oCell
       oTbl.Range.Shading.BackgroundPatternColorIndex = wdColorWhite
      Next oTbl
    For oTbl = 2 To oTblct
      For Each oCell In oTbl.Range.Cells
      oCell.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
      Next oCell
      oTbl.Rows(1).Shading.BackgroundPatternColorIndex = wdGray25
      oTbl.Rows(1).Range.Bold = True
      Next oTbl
End Sub

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    我会这样做:

    Sub Change_Tables_Formating()
        Dim oTbl As Word.Table, i As Long
        For Each oTbl In ActiveDocument.Tables
            i = i + 1
            If i = 1 Then
                FormatFirst oTbl
            Else
                FormatRest oTbl
            End If
        Next oTbl
    End Sub
    
    Sub FormatFirst(tbl As Table)
        Dim oCell
        For Each oCell In tbl.Range.Cells
            oCell.Range.ParagraphFormat.Alignment = wdAlignParagraphLeft
        Next oCell
        tbl.Range.Shading.BackgroundPatternColorIndex = wdColorWhite
    
    End Sub
    
    Sub FormatRest(tbl As Table)
        Dim oCell
        For Each oCell In tbl.Range.Cells
            oCell.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
        Next oCell
        tbl.Rows(1).Shading.BackgroundPatternColorIndex = wdGray25
        tbl.Rows(1).Range.Bold = True
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2013-11-07
      • 1970-01-01
      • 2019-08-27
      • 2014-11-26
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      相关资源
      最近更新 更多