我有一个excel表,我正在尝试自动删除数据并将数据插入到Excel表中。
我正在使用此VBA代码从我的表中删除我的数据
Sub Macro2()
Application.ScreenUpdating = False
Sheets("Report").Select
ActiveSheet.ListObjects("Report").HeaderRowRange.Select
'Remove the filters if one exists.
If ActiveSheet.FilterMode Then
Selection.AutoFilter
End If
With Worksheets("Report").ListObjects("Engagement_report")
.DataBodyRange.Offset(1).Resize(.DataBodyRange.Rows.Count - 1, .DataBodyRange.Columns.Count).Rows.Delete
.DataBodyRange.Rows(1).SpecialCells(xlCellTypeConstants).ClearContents
End With
End Sub
然而,当我尝试将数据(大约11 000行)插入到同一个表中时,它非常慢并且我的excel崩溃了。我不确定它是否因为调整大小函数我确实删除了所有行,因此当我再次插入数据时,它正在重做范围,因此它很慢。
有人有任何建议可以提供帮助吗?
感谢您的帮助
答案 0 :(得分:0)
Public Sub addDataToTable(ByVal strTableName As String, _
ByVal strData As String, ByVal col As Integer)
ActiveSheet.Table(strTableName).Select
If strTableName.Rows.Count = 1 Then
strTableName(Row, col).Value = strData
Else
strTable(LastRow, col).Value = strData
End If
End Sub
注意:我认为这会对你有所帮助。
答案 1 :(得分:0)
此示例代码将帮助您插入多行。
Sub InsrtRw2()
Dim c As Range, fst As Range, c2 As Range
Set c = Cells.Find("Test", MatchCase:=False, _
lookat:=xlWhole, LookIn:=xlValues)
If Not c Is Nothing Then
c(2).EntireRow.Resize(10).Insert
Set fst = c
again:
Set c2 = Cells.FindNext(c)
If Not c2 Is Nothing Then
If c2.Address <> c.Address _
And c2.Address <> fst.Address Then
c2(2).EntireRow.Resize(10).Insert
Set c = c2
GoTo again
End If
End If
End If
End Sub