首页 > 解决方案 > 如果使用vba在word中的表格调整行高

问题描述

我有一个基于两个不同表格的两页重复的模板。我正在研究一个宏来调整整个文档中这些表格的行高,以使行高相同。有时表格会留在页面上,有时它会不断溢出到新页面上。

我一直在尝试几种不同的方法,下面是我最接近让它工作的方法。下面通过查看文档的位置来获取实际的行高。我遇到的问题是表格是跨页的,因此当它到达下一页的一行时会一直显示错误。错误是“测量值必须在 0 pt 和 1584 pt 之间。”

这是我目前使用的代码:

A = 1
B = 2

While B <= ActiveDocument.Tables.Count

Set T1 = ActiveDocument.Tables(A)
Set T2 = ActiveDocument.Tables(B)

Set R1 = T1.Rows
Set R2 = T2.Rows

Set C1 = T1.Columns
Set C2 = T2.Columns

For i = 1 To R1.Count()
   If i = R1.Count() Then
   Else
      H1 = T1.Rows(i + 1).Range.Information(wdVerticalPositionRelativeToPage) _
    - T1.Rows(i).Range.Information(wdVerticalPositionRelativeToPage)
      H2 = T2.Rows(i + 1).Range.Information(wdVerticalPositionRelativeToPage) _
    - T2.Rows(i).Range.Information(wdVerticalPositionRelativeToPage)

      If H1 > 0 Or H1 < 1584 Or H2 > 0 Or H2 < 1584 Then
         If H1 > H2 Then
            R2(i).Height = H1
         Else
            R1(i).Height = H2
         End If
      End If
   End If

Next

A = A + 1
B = B + 2
Wend

我还尝试使用以下设置高度,在这种情况下不起作用,因为它只获取行的默认高度而不是实际高度。

H1 = R1(i).Height
H2 = R2(i).Height

感谢您提前提供任何帮助。

标签: vbams-wordrow-height

解决方案


感谢所有帮助过的人。我最终通过使用以下代码解决了这个问题,并使文档页面变得非常长。不理想,但有效。

Sub rowHeight()
A = 2
B = 4

While B <= ActiveDocument.Tables.Count

Set T1 = ActiveDocument.Tables(A)
Set T2 = ActiveDocument.Tables(B)

Set r1 = T1.Rows
Set r2 = T2.Rows

Set C1 = T1.Columns
Set C2 = T2.Columns

On Error Resume Next
For i = 1 To r1.Count()

If i = r1.Count() Then
Else
H1 = T1.Rows(i + 1).Range.Information(wdVerticalPositionRelativeToPage) _
    - T1.Rows(i).Range.Information(wdVerticalPositionRelativeToPage)
H2 = T2.Rows(i + 1).Range.Information(wdVerticalPositionRelativeToPage) _
    - T2.Rows(i).Range.Information(wdVerticalPositionRelativeToPage)
'H1 = R1(i).Height
'H2 = R2(i).Height
If H1 > 0 & H1 < 1584 & H2 > 0 & H2 < 1584 Then
If H1 > H2 Then
r2(i).Height = H1
Else
r1(i).Height = H2
End If
End If
End If

Next

A = A + 4
B = B + 4
Wend

End Sub

推荐阅读