在 Word 表格中插入一个单元格,将最后一个单元格移到下一行...可以做到吗?

在 Word 表格中插入一个单元格,将最后一个单元格移到下一行...可以做到吗?

我有一个 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 个文本)。然后,您可以将现有文本框复制并粘贴到要插入的位置,并使用新输入文本进行编辑。

相关内容