2013-12-19 41 views
0

我想從我擁有的數組中填充列表框。列表框正在獲取正確的行數,但它們都是空白的。起初它甚至沒有這樣做,但我換了我的數組,然後至少使用了正確的行數。任何人有任何想法?列表框是完全空白的

Public strArray() As String 

lngArraySize = -1 
ReDim strArray(1, 0) 
For i = intLRow To 2 Step -1 
    If Cells(i, "E").Value - Cells(i, "D").Value = 0 Then 
     lngArraySize = lngArraySize + 1 
     ReDim Preserve strArray(1, lngArraySize) 
     strArray(0, lngArraySize) = Format(Cells(i, "C").Value, "mm-dd-yyyy") 
     strArray(1, lngArraySize) = Cells(i, "B").Value 
    End If 
Next i 

然後我彈出窗體和填充它的初始化是這樣的:

With .lstOptions 
    .ColumnCount = 2 
    .ColumnWidths = "100;100" 
    .List = Application.Transpose(strArray) 
End With 

回答

2

,我能想到的唯一原因是你的範圍對象是不完全合格的,因此您的代碼可能指的是錯誤的表單。如果代碼指的是空白工作表,則E-D將爲0,因此行數仍然是您所期望的。將您的代碼更改爲此。

Dim ws As Worksheet 

'~~> Change this to the relevant sheet 
Set ws = ThisWorkbook.Sheets("Sheet1") 

intLRow = 5 
lngArraySize = -1 
ReDim strArray(1, 0) 
For i = intLRow To 2 Step -1 
    With ws 
     If .Cells(i, "E").Value - .Cells(i, "D").Value = 0 Then 
      lngArraySize = lngArraySize + 1 
      ReDim Preserve strArray(1, lngArraySize) 
      strArray(0, lngArraySize) = Format(.Cells(i, "C").Value, "mm-dd-yyyy") 
      strArray(1, lngArraySize) = .Cells(i, "B").Value 
     End If 
    End With 
Next i 
+0

對不起,我看到你在我之前回答了這個問題,我會刪除我的答案。 – DaveU

+0

@Siddharth Rout我現在沒有和我在一起,但我可以在早上檢查它。謝謝! – PermaNoob

+0

+1,很好的建議。 –