Ray想知道是否有一种方法可以逐像素垂直移动整个Word表。他所阅读的所有内容都表明,抓住它并按住Alt键将允许这样做,但操作并不流畅。

我不确定Ray一直在哪里读书,但是Alt键不允许微调表格。实际上,它似乎根本无法用于表格移动,只有一个例外-如果您按Shift + Alt然后使用向上或向下箭头键,表格将在文档中的整个段落上上下移动。

其他按键组合也不起作用。您可能会认为对表进行微调会像对文档中的其他对象那样工作—选择对象,然后使用箭头键进行微调。但是,它根本不适用于表。如果选择表格,然后按向上或向下箭头键,则Word将取消选择表格,并将插入点移动到文档中表格的上方或下方。

但是,您可以使用几种解决方法。首先,您可以调整表格在文档中的放置方式。只需将它们放在文本框中,然后您就可以使用箭头键微移文本框。

(您也可以设置文本框上的边框的格式,使其不显示。)

另一个解决方法是使用宏进行移动。以下宏会将表格上移单个像素:

Sub MoveTableUp1()

' set pxl to the number of pixels to move: positive for down and '   negative for up     Const pxl As Single = -1

If Not Selection.Information(wdWithInTable) Then Exit Sub     With Selection.Tables(1)

.Rows.VerticalPosition = .Rows.VerticalPosition + PixelsToPoints(pxl)

End With End Sub

您需要做的就是确保插入点在您要微调的表内。如果要向下而不是向上移动表格,只需将pxl常量的定义更改为正1而不是负1。

关于此宏,您还需要注意其他事项-它可能会使您的文档布局混乱。您会看到,VerticalPosition属性仅在您的表配置为允许文本环绕其时才有效。

(这是在“表属性”对话框的“表包装”区域中配置的。)认识到这一点,当您使用宏来调整VerticalPosition属性时,它将自动将表从“无”更改为“周围”。显然,如果您以前没有打开自动换行并且表格的宽度小于文本区域,则这可能会影响页面布局。

这里还有另一个潜在的“陷阱”。您可能认为可以通过将上述宏中的VerticalPosition属性更改为Horizo​​ntalPosition来调整表格的水平位置。这似乎是合乎逻辑的,但是它如何在宏中工作可能会使您陷入困境。

调整VerticalPosition属性会将表换行从“无”更改为“周围”,而调整Horizo​​ntalPosition属性则不会。而是,在某些版本的Word上,它将给您一个错误。

处理所有这些怪癖的最安全方法是调整宏,以确保仅在将其包装属性设置为True的情况下才调整表,方法是:

Sub MoveTableUp2()

Dim sTemp As String

' set pxl to the number of pixels to move: positive for down and '   negative for up     Const pxl As Single = -1

sTemp = ""

If Selection.Information(wdWithInTable) Then         With Selection.Tables(1).Rows             If .WrapAroundText Then                 .VerticalPosition = .VerticalPosition + PixelsToPoints(pxl)

Else                 sTemp = "Table is inline. No action taken."

End If         End With     Else         sTemp = "The insertion point is not within a table. No action taken."

End If     If sTemp > "" Then MsgBox sTemp End Sub

宏的这种变化形式还为用户提供了更多反馈,因此,如果不采取任何措施,则会告知用户原因。

如果愿意,可以一次将桌子移动一点(1/72英寸)。这是可以处理此运动的宏的版本:

Sub MoveTableUp3()

Dim sTemp As String

' set pt to the number of points to move: positive for down and '   negative for up     Const pt As Single = -1

sTemp = ""

If Selection.Information(wdWithInTable) Then         With Selection.Tables(1).Rows             If .WrapAroundText Then                 .VerticalPosition = .VerticalPosition + pt             Else                 sTemp = "Table is inline. No action taken."

End If         End With     Else         sTemp = "The insertion point is not within a table. No action taken."

End If     If sTemp > "" Then MsgBox sTemp End Sub

正如已经讨论过的,水平而不是垂直轻推表只是将Rows对象与Horizo​​ntalPosition属性一起使用,而不是VerticalPosition属性。

不过,请记住,还讨论了有关Horizo​​ntalPosition属性在使用上与VerticalPosition属性的不同之处的注意事项。考虑到这一点,您可以轻松地创建宏的四个版本(针对您可能希望微调表的四个方向中的每个方向),然后将快捷键分配给宏。

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(12136)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。