我刚刚开始与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而不是表相关。我非常感谢一些指导,谢谢。
答案 0 :(得分:0)
将子程序转换为UDF并在表格中用作公式。