0

我刚刚开始使用 VBA 进行实习,我目前的项目遇到了一个小问题。我确信这是一个我没有看到的直截了当的解决方法,因为在线上没有任何内容。

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

我希望它只为用户更改的行运行 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

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

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

Target.ListObject 为我的表格提供了适当的范围,因此我知道它可以触摸它,并且我可以获得我想要与之交互的确切范围,但行号与工作表行数相关,而不是与表格相关。我真的很感激一些指导,谢谢。

4

1 回答 1

0

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

于 2016-10-18T14:51:16.670 回答