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