Excel VBA 在给定范围内处理 table 内的单元格

Excel VBA working with cell inside a table given its range

我刚开始在 VBA 实习,我目前的项目遇到了一个小问题。我确信这是一个我没有看到的直接修复,因为网上没有任何内容。

我的工作表采用列表对象行中的几个输入值,returns 从映射到同一行中其他列的相关值。

我只希望它 运行 FindBankInfo 子用户已更改的行

If Not Intersect(Target, lo.ListColumns("Document Type").Range) Is Nothing Or Not Intersect(Target, lo.ListColumns("Bank").Range) Is Nothing _
Or Not Intersect(Target, lo.ListColumns("Transit Type").Range) Is Nothing Then
'rowCount in the sub is used as lo.listrow(rowcount), it's the table row I am working with
    FindBankInfo lo, loMap, loMap2, rowCount
End If

我可以像这样工作

If Not Intersect(Target, lo.ListColumns("Document Type").Range) Is Nothing Or Not Intersect(Target, lo.ListColumns("Bank").Range) Is Nothing _
Or Not Intersect(Target, lo.ListColumns("Transit Type").Range) Is Nothing Then
    For Each lr in lo.ListRows
        rowCount = rowCount + 1
        FindBankInfo lo, loMap, loMap2, rowCount
    Next lr
End If

就像这样,每次更改内容时它都会遍历每一行,如果它已经填充,我会在子中跳过。但这感觉很愚蠢且效率低下,如果有很多行就会变慢,因为我正在检查填充行之间的空白行,所以我不能只在空白处结束。

我需要的是给定一个Target,如何将该Target范围转换为相关的ListObject范围并获取ListObject行号???

Target.ListObject 为我的 table 提供了适当的范围,所以我知道它可以触摸它,并且我可以获得我想要与之交互的确切范围,但行号与工作表行数而不是 tables。非常感谢您的指导,谢谢。

将您的子例程转换为 UDF 并用作 Table 上的公式。