我有一个Excel工作表(称为费用计划员 - 标准输入),上面有一个表(称为StandardInput)和一个调用VBA Sub的按钮,用于在表格的底部添加一个新行:
Public Sub AddStandardInputRow()
Dim standardInputTable As ListObject
Dim newRow As ListRow
Set standardInputTable = ThisWorkbook.Worksheets("Fee Planner - Standard Input").ListObjects("StandardInput")
Set newRow = standardInputTable.ListRows.Add
Set standardInputTable = Nothing
End Sub
我似乎得到了运行此代码的随机结果,有时它适用于几行然后开始出错,有时它会在第一次单击按钮时出错。抛出的错误是
其次是
我只得到第一次错误,但之后我一直得到1004错误。因此,重新启动Excel后,我立即收到第一个错误。
我猜测有一些根本原因,但我无法看清它是什么。
答案 0 :(得分:0)
使用时会发生什么:
Sub M_snb()
With Sheet1.ListObjects(1).Range
sheet1.Cells(.Rows(.Rows.Count + 1).Row, .Columns(1).Column) = " "
End With
End sub
答案 1 :(得分:0)
所以似乎问题出在线上
Dim newRow As ListRow
...
Set newRow = standardInputTable.ListRows.Add
newRow
对象上的代码中出现了引用泄漏。
我尝试了包含
Set newRow = Nothing
在方法的倒数第二行上哪条更好但仍然不是很好,我现在完全删除了对newRow
对象的所有引用,所以该方法只调用standardInputTable.ListRows.Add
,这似乎是更可靠:
Public Sub AddStandardInputRow()
Dim standardInputTable As ListObject
Set standardInputTable = ThisWorkbook.Worksheets("Fee Planner - Standard Input").ListObjects("StandardInput")
standardInputTable.ListRows.Add
Set standardInputTable = Nothing
End Sub