我可能遗漏了一些简单的东西,但 ListRows.Add 让我很伤心。这是功能:
Sub addEmployee(employeeName As String, tableToAddTo As ListObject)
Dim newRow As ListRow
Set newRow = tableToAddTo.ListRows.Add()
newRow.Range.Cells(1, 1).Value = employeeName
tableToAddTo.Sort.Apply
End Sub
在大多数情况下,这可以正常工作。但是,每当该函数在我的工作表中的某个表上运行时,调用 ListRows.Add 之后的行永远不会执行(至少这是调试器所指示的),并且该行不会被添加到表中。有什么想法/想法吗?
更新:
这是我在发帖后学到的东西。如果我为 Sub 提供存根数据,它可以正常工作。例如:
Sub driver()
Dim myTable As ListObject
Set myTable = getTableObject("myTableName")
Call addEmployee("myName", myTable)
End Sub
注意:getTableObject 循环遍历工作表并返回具有匹配名称的 ListObject。
处理调用代码的上下文似乎是一个问题。在失败的情况下,公式(函数调用)已放置在各种工作表的各个单元格中。该公式包含对其他单元格中数据的引用。当其他单元格中的数据发生变化时,将调用公式,然后调用上面给出的 addEmployee Sub。这是失败的情况。