2017-02-07 36 views
2

我尝试如下解决我的问题:如何返回多维数组的值在列表视图(VBA)

intFirstIdx = UBound(arrDetailInfo, 1) 
intSecIdx = UBound(arrDetailInfo, 2) 

With Me.lvDetaillist 
    With .ColumnHeaders 
     .Clear 
     .Add , , "#", 20 
     .Add , , "ID", 50 
     .Add , , "Assets", 50 
     .Add , , "Day Count", 50 
     .Add , , "Result", 150 
    End With 
    .ListItems.Clear 
End With 

cnt = 1 
With Me.lvDetaillist 
    For i = 0 To intFirstIdx 
     Set li = .ListItems.Add(, , cnt) 
     For k = 0 To intSecIdx 
      li.SubItems(cnt) = arrDetailInfo(i, k) 
     Next k 
     cnt = cnt + 1 
    Next i 
End With 

这里是我的数组的内容:

enter image description here

做任何人知道如何解决它的方法?

回答

1

li.SubItems(cnt) = arrDetailInfo(i, k)

试试这个:

li.SubItems(k+1) = arrDetailInfo(i, k) 

你可以做到这一点没有这些计数器cntbytRowCnt

With Me.lvDetaillist 
    For i = 0 To intFirstIdx 
     Set li = .ListItems.Add(, , i+1) 
     For k = 0 To intSecIdx 
      li.SubItems(k+1) = arrDetailInfo(i, k) 
     Next k 
    Next i 
End With 
+1

感谢,也对您有所帮助:)比我的代码有点小! :) – yuro

+1

@Yuro是啊。有趣的是,在发布我的答案(第一部分)的同一分钟,你找到了自己的解决方案。很高兴知道它被解决了。 –

1

我解决了这个如下:

intFirstIdx = UBound(arrDetailInfo, 2) 
intSecIdx = UBound(arrDetailInfo, 1) 

bytRowCnt = 1 
With Me.lvDetaillist 
    For i = 0 To intFirstIdx 
     Set li = .ListItems.Add(, , bytRowCnt) 

     cnt = 1 
     For k = 0 To intSecIdx 
      li.SubItems(cnt) = arrDetailInfo(k, i) 
      cnt = cnt + 1 
     Next k 
     bytRowCnt = bytRowCnt + 1 
    Next i 
End With 

而且它的工作原理很大:)

+0

无论如何,你不需要额外的计数器,'i'和'k'就足够了。看到我的答案:) –