我有一个 Word 文档,其中有一连串单元格,按字母顺序排列。无论它向下延伸多长,宽度都是六个单元格。
我想要做的是在中途添加另一个项目,这样会将该行中的所有内容推到右侧,然后将该行中的最后一个项目敲到下一个项目的开头。
例如:
阿伯丁 -tab- 阿什福德 -tab- 巴斯 -tab- 贝德福德 -tab- 伯明翰 -tab- 博尔顿
布拉德福德 -tab- 卡莱尔 -tab- 切尔滕纳姆 -tab- 切斯特 -tab- 科比 -tab- 德比
ETC
现在,我可能想在这个列表中添加一个新条目,比如布莱克浦。所以我想在伯明翰之后添加它,然后将博尔顿移到下一行,然后将德比推到那一行,依此类推。
这可能吗?
我可以向下阅读,使用普通文本,然后使用列而不是表格,这样可以达到接近的效果。但不是水平的。
答案1
Word 中没有内置自动执行此操作的方法。Word 表格单元格固定在表格行中的位置。您无法将单元格及其内容拖到其他位置。
要完成您想要的操作,需要一个宏。根据您告诉我们的信息,以下宏应该可以为您工作。它要求您当前的选择点位于您想要向右移动的表格单元格内容中。
Sub ShiftRightAndDown()
Dim tbl As Word.Table, rng As Word.Range
Dim LastCellNbr As Long, SaveCellNbr As Long
If Not Selection.Information(wdWithInTable) Then
MsgBox "Selection is not withing a table cell", vbExclamation, "Shift Cell Content Right"
Exit Sub
End If
On Error GoTo errHandler
Application.ScreenUpdating = False
Set tbl = Selection.Tables(1)
LastCellNbr = tbl.Range.Cells.Count
Set rng = Selection.Cells(1).Range
For i = 1 To LastCellNbr
If rng.InRange(tbl.Range.Cells(i).Range) Then
SaveCellNbr = i
Exit For
End If
Next
If Len(tbl.Range.Cells(LastCellNbr).Range.Text) > 2 Then
tbl.Range.rows.Add
LastCellNbr = tbl.Range.Cells.Count
End If
If SaveCellNbr = LastCellNbr Then
tbl.Range.rows.Add
LastCellNbr = tbl.Range.Cells.Count
End If
For i = LastCellNbr To SaveCellNbr Step -1
Set rng = tbl.Range.Cells(i).Range
rng.MoveEnd wdCharacter, -1
If Len(rng.Text) > 0 Then
Exit For
End If
Next
For i = i To SaveCellNbr Step -1
tbl.Range.Cells(i + 1).Range.FormattedText = rng.FormattedText
Set rng = tbl.Range.Cells(i - 1).Range
rng.MoveEnd wdCharacter, -1
Next
Set rng = tbl.Range.Cells(SaveCellNbr).Range
rng.MoveEnd wdCharacter, -1
rng.Text = ""
errHandler:
If Err.Number > 0 Then
MsgBox Err.Number & vbCr & Err.Description, vbCritical, "Shift Cell Content Right"
End If
Application.ScreenUpdating = True
End Sub
答案2
您可以使用文本框来实现这一点,将其位置属性设置为与文本内联(并调整大小,使页面上一行可容纳 6 个文本)。然后,您可以将现有文本框复制并粘贴到要插入的位置,并使用新输入文本进行编辑。