查找多列列表视图的最后一项

时间:2016-06-23 16:08:55

标签: vba excel-vba excel

我有一个同事在useform中创建的多列列表视图。一旦useform打开,它就会被填充。我想在填充的列表视图的最后一行中找到项目。例如:

header1   header2   header3
 11         12        13
 21         22        23
 31         32        33

我想要一行(或几行)将313233存储在不同的变量中。

我的ListView名为lsvLots。我能够将31存储在字符串strProduct中,其中包含以下内容:

 strProduct = lsvLots.ListItems.Item(lsvLots.ListItems.Count)

但是我只能返回第一列的最后一项。如何访问其他列?

2 个答案:

答案 0 :(得分:2)

列表中的最后一行由ListCount确定,可以按如下方式引用:

UserForm1.lsvLots.List(UserForm1.lsvLots.ListCount - 1, 0)

注意,如果ListBox中有一行,ListCount将为1。然而,引用它(第一行和最后一行)的索引从0开始而不是从1开始。因此,您必须从ListCount中减去1以将其转换为索引(从0开始)。

结尾处的0表示您希望从该行获取第一列。同样,第一列的列为0,第二列为1,第三列为2,等等。

简而言之,要获取最后一行中的所有项目,您应该使用:

strProduct1 = UserForm1.lsvLots.List(UserForm1.lsvLots.ListCount - 1, 0)
strProduct2 = UserForm1.lsvLots.List(UserForm1.lsvLots.ListCount - 1, 1)
strProduct3 = UserForm1.lsvLots.List(UserForm1.lsvLots.ListCount - 1, 2)

或(更整洁):

With UserForm1.lsvLots
    strProduct1 = .List(.ListCount - 1, 0)
    strProduct2 = .List(.ListCount - 1, 1)
    strProduct3 = .List(.ListCount - 1, 2)
End With

答案 1 :(得分:0)

试试这个

strProduct = lsvLots.ListItems(lsvLots.ListItems.Count).SubItems(1)