2017-02-07 32 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'就足夠了。看到我的答案:) –