Empujar una mesa (Microsoft Word)
Ray se pregunta si hay alguna forma de mover una tabla de Word completa verticalmente, píxel a píxel. Todo lo que ha leído indica que agarrarlo y mantener presionada la tecla Alt lo permitirá, pero no funciona bien.
No estoy seguro de dónde ha estado leyendo Ray, pero la tecla Alt no permite empujar tablas. De hecho, no parece funcionar para el movimiento de la tabla, con una excepción: si presiona Mayús + Alt y luego usa las teclas de flecha hacia arriba o hacia abajo, la tabla se mueve hacia arriba o hacia abajo un párrafo completo en su documento.
Otras combinaciones de pulsaciones de teclas tampoco funcionan. Pensaría que las tablas de empuje funcionarían como lo hace con otros objetos dentro de un documento: selecciona el objeto y luego usa las teclas de flecha para dar el empujón. Sin embargo, no funciona en absoluto con tablas. Si selecciona la tabla y luego presiona las teclas de flecha hacia arriba o hacia abajo, Word anula la selección de la tabla y mueve el punto de inserción por encima o por debajo de la tabla en el documento.
Sin embargo, hay un par de soluciones alternativas que puede utilizar. Primero, puede ajustar cómo coloca sus tablas en el documento. Simplemente colóquelos dentro de un cuadro de texto y luego puede usar las teclas de flecha para empujar el cuadro de texto.
(También puede formatear el borde del cuadro de texto para que no se muestre).
Otra solución es utilizar una macro para hacer el movimiento. La siguiente macro moverá la tabla un solo píxel hacia arriba:
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
Todo lo que necesita hacer es asegurarse de que el punto de inserción esté dentro de la tabla que desea empujar. Si desea mover la tabla hacia abajo en lugar de hacia arriba, simplemente cambie la definición de la constante pxl para que sea un 1 positivo en lugar de un 1.
Hay algo más que debe tener en cuenta sobre esta macro: puede estropear el diseño de su documento. Verá, la propiedad VerticalPosition solo es efectiva si su tabla está configurada para permitir que el texto la rodee.
(Esto se configura en el área Ajuste de tabla del cuadro de diálogo Propiedades de tabla). Reconociendo esto, cuando usa la macro para ajustar la propiedad VerticalPosition, automáticamente cambia la tabla de «ninguna» a «alrededor». Esto, obviamente, podría afectar el diseño de la página si no había activado previamente el ajuste y la tabla es más estrecha que su área de texto.
También hay otro potencial «te atrapé» aquí. Podría pensar que puede ajustar la posición horizontal de la tabla cambiando la propiedad VerticalPosition en la macro anterior a HorizontalPosition. Esto parece lógico, pero la forma en que funciona en la macro puede confundirte.
Donde el ajuste de la propiedad VerticalPosition cambiará el ajuste de la tabla de «none» a «around», el ajuste de la propiedad HorizontalPosition no lo hará. En cambio, en algunas versiones de Word, le dará un error.
La forma más segura de lidiar con todas estas peculiaridades es ajustar la macro para asegurarse de que solo ajusta una tabla si su propiedad de envoltura está establecida en True, de esta manera:
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
Esta variación de la macro también incluye un poco más de retroalimentación para el usuario, de modo que si no se realiza ninguna acción, se le dice al usuario por qué es así.
Si lo prefiere, puede mover la mesa un punto (1/72 de pulgada) a la vez. Aquí está la versión de la macro que podría manejar este movimiento:
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
Como ya se mencionó, empujar la tabla horizontalmente en lugar de verticalmente es simplemente cuestión de usar la propiedad HorizontalPosition con el objeto Rows en lugar de la propiedad VerticalPosition.
Recuerde, sin embargo, las advertencias discutidas, también, sobre cómo la propiedad HorizontalPosition difiere en uso de la propiedad VerticalPosition. Con esto en mente, podría crear fácilmente cuatro versiones de su macro (para cada una de las cuatro direcciones, es posible que desee empujar su tabla) y luego asignar teclas de acceso directo a las macros.
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios WordTips), he preparado una página especial que incluye información útil.
link: / wordribbon-WordTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
WordTips es su fuente de formación rentable en Microsoft Word.
(Microsoft Word es el software de procesamiento de texto más popular del mundo). Este consejo (12136) se aplica a Microsoft Word 2007, 2010, 2013, 2016, 2019 y Word en Office 365.