将列插入表格,同时移动所有相邻单元格VBA Excel

t1qtbnec  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(232)

我的Excel工作表中有一个表格,其中行数不断变化。有时可能需要在表的右侧添加新列。
我已经在VBA中使用tbl.ListColumns.Add().Name = temp完成了这一点,其中temp是我正在创建的新列的标题名称。
现在,问题是,在表的右侧(不是表的一部分),我有一列填充的单元格。当我向表中添加新列时,只有与表直接相邻的单元格向右移动。相邻列中的其他所有内容都保持在其原始位置。
有没有一种方法可以编程地将一个新列插入到右侧表中,同时也移动与该表相邻的整个列的内容?
我试过使用Columns(x).Insert shift:=xlShiftRight,但除非我用错了,否则它只会向工作表添加一个新列,我仍然需要向表中添加一个新列,这会导致同样的问题。

r6l8ljro

r6l8ljro1#

不使用ListColumns.Add(),您可以简单地将一些内容写入表旁边的单元格中。当该列为空时(准确地说,只有表格旁边的单元格需要为空),Excel将自动为表格创建一个新列。然而,不进行移位并且剩余片材的结构保持完整。
现在,如果我理解正确的话,表旁边已经有数据了,所以你需要先插入一个新的(Excel-)列。
下面的例程将执行此操作:搜索表格旁边的第一个单元格,插入一列,并在该列的标题行中写入内容。

  1. Sub CreateNewTableColumn(table As ListObject, caption As String)
  2. Dim cell As Range
  3. ' Set Cell to first cell next to the table
  4. Set cell = table.ListColumns(table.ListColumns.Count).Range.Offset(, 1).Resize(1, 1)
  5. ' Add an column to the sheet at that position.
  6. cell.EntireColumn.Insert xlToRight
  7. ' As adding a column will move the cell reference, to back one column
  8. Set cell = cell.Offset(0, -1)
  9. ' Just write the Caption, this will automatically create a new column
  10. cell.Value = caption
  11. End Sub

字符串
假设tbl保存对表的引用,temp保存新列的标题,可以使用

  1. CreateNewTableColumn tbl, temp

展开查看全部

相关问题