Подталкивание стола

Рэй задается вопросом, есть ли способ переместить всю таблицу Word по вертикали, пиксель за пикселем. Все, что он прочитал, указывает на то, что схватив его и удерживая клавишу Alt , это можно сделать, но это не работает плавно.

Я не уверен, где Рэй читал, но клавиша Alt не позволяет перемещать таблицы. На самом деле, похоже, что это вообще не работает для перемещения таблицы, за одним исключением – если вы нажмете Shift + Alt , а затем воспользуетесь клавишами со стрелками вверх или вниз, таблица будет перемещена вверх. или вниз на весь абзац в документе.

Другие комбинации клавиш тоже не работают. Вы могли бы подумать, что таблицы смещения будут работать так же, как и для других объектов в документе – вы выбираете объект, а затем используете клавиши со стрелками, чтобы подтолкнуть. Однако он вообще не работает с таблицами. Если вы выберете таблицу, а затем нажмете клавиши со стрелками вверх или вниз, Word снимет выделение с таблицы и переместит точку вставки выше или ниже таблицы в документе.

Есть несколько обходных путей. однако вы можете использовать. Во-первых, вы можете настроить способ размещения таблиц в документе. Просто поместите их в текстовое поле, а затем вы можете использовать клавиши со стрелками, чтобы подтолкнуть текстовое поле. (Вы также можете отформатировать границу в текстовом поле, чтобы она не отображалась.)

Другой обходной путь – использовать макрос для перемещения. Следующий макрос перемещает таблицу на один пиксель вверх:

 Sub MoveTableUp1 () 'устанавливает pxl на количество пикселей для перемещения: положительное значение для уменьшения и' отрицательное значение для вверх Const pxl As Single = -  1 Если не Selection.Information (wdWithInTable), то выйдите из Sub With Selection.Tables (1) .Rows.VerticalPosition = .Rows.VerticalPosition + PixelsToPoints (pxl) End WithEnd Sub 

Все, что вам нужно сделать Убедитесь, что точка вставки находится внутри таблицы, которую вы хотите подтолкнуть. Если вы хотите переместить таблицу вниз, а не вверх, просто измените определение константы pxl на положительную единицу, а не на отрицательную 1.

Есть еще кое-что, что вы должны отметить в этом макросе. – это может испортить макет вашего документа. Как видите, свойство VerticalPosition эффективно только в том случае, если ваша таблица настроена так, чтобы текст мог обтекать ее. (Это настраивается в области «Обтекание таблиц» диалогового окна «Свойства таблицы».) Признавая это, когда вы используете макрос для настройки свойства VerticalPosition, он автоматически меняет значение таблицы с «нет» на «около». Это, очевидно, может повлиять на макет страницы, если вы ранее не включали обтекание и таблица уже, чем ваша текстовая область.

Здесь также есть еще одна потенциальная проблема. Вы можете подумать, что вы можете настроить горизонтальное положение таблицы, изменив свойство VerticalPosition в приведенном выше макросе на HorizontalPosition. Это кажется логичным, но то, как это работает в макросе, может вызвать у вас зацикливание.. Если настройка свойства VerticalPosition изменит обтекание таблицы с «none» на «around», настройка свойства HorizontalPosition не будет. Вместо этого в некоторых версиях Word это выдает ошибку.

Самый безопасный способ справиться со всеми этими причудами – настроить макрос так, чтобы он настраивал таблицу только в том случае, если она Для свойства wrapping установлено значение True следующим образом:

 Sub MoveTableUp2 () Dim sTemp As String 'устанавливает pxl на количество пикселей для перемещения: положительное значение для перемещения вниз и отрицательное значение для перемещения вверх Const pxl As  Single = -1 sTemp = "" Если Selection.Information (wdWithInTable) Then With Selection.Tables (1) .Rows If .WrapAroundText Then .VerticalPosition = .VerticalPosition + PixelsToPoints (pxl) Else sTemp = "Таблица является встроенной. Никаких действий не предпринимается  . "  End If End With Else sTemp = "Точка вставки находится вне таблицы. Никаких действий не предпринимается."  End If If sTemp> "" Then MsgBox sTempEnd Sub 

Этот вариант макроса также включает немного больше обратной связи для пользователя, так что, если не предпринимается никаких действий, пользователю сообщается, почему это case.

При желании вы можете перемещать стол на точку (1/72 дюйма) за раз. Вот версия макроса, который мог бы обрабатывать это движение:

 Sub MoveTableUp3 () Dim sTemp As String 'устанавливает pt равным количеству точек для перемещения: положительный для вниз и' отрицательный для вверх Const pt  As Single = -1 sTemp = "" Если Selection.Information (wdWithInTable) Then With Selection.Tables (1) .Rows If .WrapAroundText Then .VerticalPosition = .VerticalPosition + pt Else sTemp = "Таблица встроена. Никаких действий не предпринимается."  End If End With Else sTemp = "Точка вставки находится вне таблицы. Никаких действий не предпринимается."  End If If sTemp> "" Then MsgBox sTempEnd Sub 

Как уже обсуждалось, смещение таблицы по горизонтали, а не по вертикали – это просто вопрос использования свойства HorizontalPosition с объектом Rows, а не свойства VerticalPosition. Тем не менее, помните, что обсуждалось также предостережение относительно того, чем свойство HorizontalPosition отличается в использовании от свойства VerticalPosition. Имея это в виду, вы можете довольно легко создать четыре версии своего макроса (для каждого из четырех направлений вы можете захотеть подтолкнуть вашу таблицу), а затем назначить сочетания клавиш для макросов.

Оцените статью
Frestage.ru
Добавить комментарий