2013-12-19 2 views
0

Я пытаюсь заполнить список из массива, который у меня есть. В списке есть правильное количество строк, но все они пусты. Сначала это даже не было, но я перенес массив, а затем, по крайней мере, использовал правильное количество строк. У кого-нибудь есть идеи?Listbox is Completed Blank

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 

Тогда воспитываю UserForm и заполнить его инициализации, как это:

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, хороший совет. –