excel VBA向表中插入多行问题

sh7euo9m  于 2023-02-25  发布在  其他
关注(0)|答案(1)|浏览(243)

我试图在一个只有一行的表中插入多行(在第一行中填写公式)。问题是我选择了多行来插入新行,而最后一行已经在它下面的第二个表的区域中。

Sub RowsAction(ByRef targetSh As Worksheet, resizeSh As Worksheet, tablename As String)
Dim i As Integer
Dim last As String

last = targetSh.Range("A1", targetSh.Cells(Rows.Count, "A").End(xlUp)).Count - 2
If last > 0 Then

With resizeSh
    MsgBox tablename & last
resizeSh.Rows(.ListObjects(tablename).HeaderRowRange.Row + .ListObjects(tablename).ListRows.Count + 1 & ":" & .ListObjects(tablename).HeaderRowRange.Row + .ListObjects(tablename).ListRows.Count + 5).Insert Shift:=xlShiftDown
End With
End If

End Sub

上面的代码将向表1添加5个新行。如果我将+5更改为+6,它将抛出一个错误,因为最后一行已经占用了表2的空间。理想情况下,它将使用变量“last”,但为了测试,我们可以使用数字。问题是我需要为工作表的整行添加新行。不仅仅是table-这样它就能正确地向下移动所有的东西。有什么想法吗?

vq8itlhq

vq8itlhq1#

你应该这样做,以添加行到您的表:

在第5行上方插入一行

ActiveSheet.ListObjects("Table1").ListRows.Add (5)

在表格底部添加行

ActiveSheet.ListObjects("Table1").ListRows.Add AlwaysInsert:= True

例如,要在表格中插入多行,您可以执行以下操作:

Sub Tryme()

Dim HowMuchRowToInsert As Long
Dim AferWitchRowShouldIInsertRow As Long

HowMuchRowToInsert = 10
AferWitchRowShouldIInsertRow = 3

For i = 1 To HowMuchRowToInsert

Sheets("Sheet1").ListObjects("Tableau2").ListRows.Add (AferWitchRowShouldIInsertRow + i)

Next

End Sub

让我们测试一下:
存档日期:

存档时间:

因此不会扭曲相邻像元Edit 2

Sub Tryme()

Dim HowMuchRowToInsert As Long
Dim AferWitchRowShouldIInsertRow As Long

HowMuchRowToInsert = 10
AferWitchRowShouldIInsertRow = 3

For i = 0 To HowMuchRowToInsert - 1

Range(AferWitchRowShouldIInsertRow + i & ":" & AferWitchRowShouldIInsertRow + i).Insert CopyOrigin:=xlFormatFromRightOrBelow

Next

End Sub

要避免循环,请执行以下操作:

sub tryme()
Worksheets(“Sheet1”).Rows(“11:15”).Insert Shift:=xlShiftDown
end sub

相关问题