VBA将新行插入表中,并移动工作表的整行

时间:2018-04-13 07:59:08

标签: excel vba excel-vba

我有以下代码用于在表格中插入新行(也将表格下方的内容向下移动),但它使用的是ActiveCell。是否可以将它用于定义的工作表,表名和代码下面定义的多行。

With ActiveCell.ListObject
   ActiveSheet.Rows(.HeaderRowRange.Row + .ListRows.Count + 1).insert
   .Resize (ActiveSheet.Range(.HeaderRowRange(1, 1), Cells(.HeaderRowRange.Row + 
   .ListRows.Count + 1, .ListColumns.Count)))
End With

Set newsheet = ThisWorkbook.Sheets("GeneralInfo")
tablename = "Table1"
newrows = 15

1 个答案:

答案 0 :(得分:0)

首先,您如何找到ListObject?我通常使用这种语法:

Range("Table1").ListObject 

范围("表1和#34;)位允许我找到ListObject,即使我不知道它在哪个表格上。这是有效的,因为Tables也是命名范围,您可以按名称进行寻址。所以你只需说"转到名为Table1的命名范围,然后找到生活在那里的ListObject"。否则,您需要事先知道ListObject所处的工作表,并使用以下命令:

Worksheets("SomeSheet").Listobjects("Table1")

...直到有一天你将表格移到另一张表格并且忘记更新你的代码时,它才能正常工作。

接下来,如何添加行?要添加单个listrow,只需使用:

 Range("Table1").ListObject.ListRows.Add X

...其中X是您希望在上面添加的ListRow编号。将1放在顶部,将2放在第二个,依此类推。将其留空并将ListRow添加到底部。

但这只能让你一次添加1个ListRow。所以你有三个选择:

  1. 创建循环,执行15次
  2. 只需调整ListObject的大小,以便将15行添加到结尾
  3. 只需将整个工作表行插入您想要新ListRows的位置,使用以下内容:

    行(" 16:30")。插入Shift:= xlDown