裸表(Microsoft Word)
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属性更改为HorizontalPosition来调整表格的水平位置。这似乎是合乎逻辑的,但是它如何在宏中工作可能会使您陷入困境。
调整VerticalPosition属性会将表换行从“无”更改为“周围”,而调整HorizontalPosition属性则不会。而是,在某些版本的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对象与HorizontalPosition属性一起使用,而不是VerticalPosition属性。
不过,请记住,还讨论了有关HorizontalPosition属性在使用上与VerticalPosition属性的不同之处的注意事项。考虑到这一点,您可以轻松地创建宏的四个版本(针对您可能希望微调表的四个方向中的每个方向),然后将快捷键分配给宏。
注意:
如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。
_WordTips_是您进行经济有效的Microsoft Word培训的来源。
(Microsoft Word是世界上最流行的文字处理软件。)本技巧(12136)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。