Ray si chiede se esiste un modo per spostare verticalmente un’intera tabella di Word, pixel per pixel. Tutto ciò che ha letto indica che afferrarlo e tenere premuto il tasto Alt lo consentirà, ma non funziona correttamente.

Non sono sicuro di dove Ray abbia letto, ma il tasto Alt non consente di spostare le tabelle. In effetti, non sembra funzionare affatto per lo spostamento della tabella, con un’eccezione: se premi Maiusc + Alt e poi usi i tasti freccia su o giù, la tabella viene spostata su o giù di un intero paragrafo nel documento.

Anche altre combinazioni di tasti non funzionano. Si potrebbe pensare che la spinta alle tabelle funzioni come per altri oggetti all’interno di un documento: si seleziona l’oggetto e quindi si utilizzano i tasti freccia per dare la spinta. Tuttavia, non funziona affatto con le tabelle. Se si seleziona la tabella e quindi si premono i tasti freccia su o giù, Word deseleziona la tabella e sposta il punto di inserimento sopra o sotto la tabella nel documento.

Tuttavia, ci sono un paio di soluzioni alternative che puoi usare. Innanzitutto, puoi modificare il modo in cui inserisci le tabelle nel documento. Inseriscili semplicemente in una casella di testo, quindi puoi utilizzare i tasti freccia per spostare la casella di testo.

(Puoi anche formattare il bordo sulla casella di testo in modo che non venga visualizzato.)

Un’altra soluzione è utilizzare una macro per eseguire il movimento. La seguente macro sposterà la tabella di un singolo pixel verso l’alto:

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

Tutto quello che devi fare è assicurarti che il punto di inserimento si trovi all’interno della tabella che desideri spostare. Se vuoi spostare la tabella verso il basso invece che verso l’alto, cambia semplicemente la definizione della costante pxl in modo che sia un 1 positivo invece che un negativo 1.

C’è qualcos’altro che dovresti notare su questa macro: potrebbe rovinare il layout del tuo documento. Vedete, la proprietà VerticalPosition è efficace solo se la tabella è configurata per consentire al testo di avvolgerla.

(Questo è configurato nell’area Disposizione della tabella della finestra di dialogo Proprietà tabella.) Riconoscendo ciò, quando si utilizza la macro per regolare la proprietà VerticalPosition, cambia automaticamente la tabella da “none” a “around”. Questo, ovviamente, potrebbe influire sul layout della pagina se in precedenza non era stato attivato il wrapping e la tabella è più stretta dell’area di testo.

C’è anche un altro potenziale “gotcha” qui. Potresti pensare di poter regolare la posizione orizzontale della tabella modificando la proprietà VerticalPosition nella macro sopra in HorizontalPosition. Questo sembra logico, ma il modo in cui funziona nella macro potrebbe farti fare un ciclo.

Dove la regolazione della proprietà VerticalPosition cambierà la disposizione della tabella da “nessuno” a “around”, la regolazione della proprietà HorizontalPosition non lo farà. Invece, su alcune versioni di Word, ti darà un errore.

Il modo più sicuro per affrontare tutte queste stranezze è regolare la macro per assicurarsi che aggiusti solo una tabella se la sua proprietà di wrapping è impostata su True, in questo modo:

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

Questa variazione della macro include anche un po ‘più di feedback per l’utente in modo che se non viene intrapresa alcuna azione, all’utente viene detto perché questo è il caso.

Se preferisci, puoi spostare la tabella di un punto (1/72 di pollice) alla volta. Ecco la versione della macro che potrebbe gestire questo movimento:

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

Come già discusso, spostare la tabella orizzontalmente invece che verticalmente è semplicemente questione di utilizzare la proprietà HorizontalPosition con l’oggetto Rows piuttosto che la proprietà VerticalPosition.

Ricordare, tuttavia, anche gli avvertimenti discussi su come la proprietà HorizontalPosition differisce in uso dalla proprietà VerticalPosition. Con questo in mente, potresti creare facilmente quattro versioni della tua macro (per ciascuna delle quattro direzioni potresti voler spostare la tua tabella) e quindi assegnare i tasti di scelta rapida alle macro.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti WordTips), ho preparato una pagina speciale che include informazioni utili.

WordTips è la tua fonte di formazione economica su Microsoft Word.

(Microsoft Word è il software di elaborazione testi più popolare al mondo.) Questo suggerimento (12136) si applica a Microsoft Word 2007, 2010, 2013, 2016, 2019 e Word in Office 365.