Option
Explicit
Public
Sub
Test()
Dim
rngNew
As
Excel.Range
Dim
x
As
Long
x = 5
If
Not
Range(
"A1"
).ListObject
Is
Nothing
Then
Set
rngNew = AddRowsToSmartTable(Range(
"A1"
).ListObject, x)
Else
Set
rngNew = AddRowsBelowRange(Range(
"A4:C4"
), x)
End
If
rngNew.
Select
End
Sub
Private
Function
AddRowsToSmartTable(Table
As
Excel.ListObject, Rows
As
Long
)
As
Excel.Range
If
Rows <= 0
Then
Call
Err.Raise(5)
End
If
Call
Table.Resize(Table.Range.Resize(Table.Range.Rows.Count + Rows))
Set
AddRowsToSmartTable = Table.DataBodyRange.Rows(Table.DataBodyRange.Rows.Count - Rows + 1 &
":"
& Table.DataBodyRange.Rows.Count)
End
Function
Private
Function
AddRowsBelowRange(Range
As
Excel.Range, Rows
As
Long
)
As
Excel.Range
If
Rows <= 0
Then
Call
Err.Raise(5)
End
If
With
Range.Rows(Range.Rows.Count).Offset(1)
Call
.Resize(Rows).Insert(xlShiftDown)
Set
AddRowsBelowRange = .Offset(-Rows).Resize(Rows)
End
With
End
Function