おそらく単純なものが欠けているのでしょうが、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 が呼び出されます。失敗するケースです。