列表框完全空白

时间:2013-12-19 00:47:09

标签: arrays excel vba excel-vba

我正在尝试从我拥有的数组填充列表框。列表框获取正确的行数,但它们都是空白的。起初它甚至没有这样做,但我转换了我的数组,然后至少它使用了正确的行数。有人有什么想法吗?

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

1 个答案:

答案 0 :(得分: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