Excel VBA在给定其范围的情况下使用表内的单元格

时间:2016-10-17 21:44:15

标签: excel vba excel-vba range listobject

我刚刚开始与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

就像这样,每当某些东西发生变化时它就会经过每一行,而如果它已经填充,我会跳过它。但是这感觉愚蠢和低效,如果有很多行,我会检查填充行之间的空行,所以我不能只是空白。

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

Target.ListObject为我提供了适合我的表的范围,所以我知道它可以触摸它,我可以得到我想要与之交互的确切范围,但行号与表rowcount而不是表相关。我非常感谢一些指导,谢谢。

1 个答案:

答案 0 :(得分:0)

将子程序转换为UDF并在表格中用作公式。