在我的一个工作表中,我有一个
Private Sub BuggingVba()
那应该用一组值替换表中的数据
Dim MyTable As ListObject, myData() As Variant
Set MyTable = Me.ListObjects(1)
myData = collectMyData ' a function defined somewhere else in my workbook
这可能是无关紧要的,但在这样做之前,我调整了列表对象的大小(我逐行扩展,因为如果我一次这样做,我会覆盖我的表格下方的内容而不是移动它。)
Dim current As Integer, required As Integer, saldo As Integer
current = MyTable.DataBodyRange.Rows.Count
required = UBound(sourceData, 1) - LBound(sourceData, 1)
' current and required are size of the body, excluding the header
saldo = required - current
If required < current Then
' reduce size
Range(DestinBody.Rows(1), DestinBody.Rows(current - required)).Delete xlShiftUp
Else
' expland size
DestinBody.Rows(1).Copy
For current = current To required - 1
DestinBody.Rows(2).Insert xlShiftDown
Next saldo
End If
如果要插入任何数据,我会覆盖这些值
If required Then
Dim FullTableRange As Range
Set FullTableRange = MyTable.HeaderRowRange _
.Resize(1 + required, MyTable.HeaderRowRange.Columns.Count)
FullTableRange.Value = sourceData
End If
BAM,我的表/ListObject 不见了! 为什么会发生这种情况,我该如何避免?
End Sub