Смещение таблицы (Microsoft Word)
Рэй задается вопросом, есть ли способ переместить всю таблицу Word по вертикали, пиксель за пикселем. Все, что он прочитал, указывает на то, что схватив его и удерживая клавишу Alt, это можно сделать, но это не работает плавно.
Я не уверен, где Рэй читал, но клавиша 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.
Вы должны отметить еще кое-что об этом макросе — он может испортить макет вашего документа. Видите ли, свойство VerticalPosition эффективно только в том случае, если ваша таблица настроена так, чтобы текст мог обтекать ее.
(Это настраивается в области «Обтекание таблицы» диалогового окна «Свойства таблицы».) Признавая это, когда вы используете макрос для настройки свойства VerticalPosition, он автоматически меняет значение таблицы с «нет» на «около». Это, очевидно, может повлиять на макет страницы, если вы ранее не включали перенос и таблица уже, чем ваша текстовая область.
Здесь также есть еще одна потенциальная «ошибка». Вы можете подумать, что можете настроить горизонтальное положение таблицы, изменив свойство VerticalPosition в приведенном выше макросе на HorizontalPosition. Это кажется логичным, но то, как это работает в макросе, может вызвать зацикливание.
Если настройка свойства VerticalPosition изменит обтекание таблицы с «none» на «around», настройка свойства 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
Как уже говорилось, смещение таблицы по горизонтали, а не по вертикали просто связано с использованием свойства HorizontalPosition с объектом Rows, а не свойством VerticalPosition.
Помните, однако, что обсуждаемые предостережения касаются того, чем свойство HorizontalPosition отличается в использовании от свойства VerticalPosition. Имея это в виду, вы можете довольно легко создать четыре версии вашего макроса (для каждого из четырех направлений вы можете захотеть подтолкнуть вашу таблицу), а затем назначить сочетания клавиш для макросов.
_Примечание: _
Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
WordTips — ваш источник экономичного обучения работе с Microsoft Word.
(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (12136) относится к Microsoft Word 2007, 2010, 2013, 2016, 2019 и Word в Office 365.