我的代码将excel中表的所有值复制到一个数组上,对其进行过滤,并用它填充一个组合框,但是我一直在我的代码上收到此错误,并且在调试后,似乎该错误是由于Redim Preserve引起的。 ..你能检查一下吗?
' FIll CB2()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("D1")
Dim LC As Long
Dim i As Long
Dim PN As Long
Dim myArray() As String
Dim j As Long
Dim k As Long
Dim temp As String
LC = ws.Cells(ws.Rows.Count, 4).End(xlUp).Row
For i = 1 To LC
If StrComp(CB1.List(CB1.ListIndex, 0), ws.Cells(i, 4), vbTextCompare) = 0 Then
'Set you array with the right dimension
ReDim Preserve myArray(0 To PN, 0 To 1)
myArray(PN, 0) = ws.Cells(i, 2)
myArray(PN, 1) = ws.Cells(i, 3)
PN = PN + 1
End If
Next i
End Sub
答案 0 :(得分:0)
第一次在循环中调用Redim语句时,没有“保留”的内容。首次设置数组尺寸时,调用不带“保留”功能的Redim。
如果标注变量的代码行是真实代码,那么令人惊讶的是它没有调用错误。我建议将每个Dim语句单独放在一行中,以便在没有其他原因的情况下提高代码的可读性,并避免在一般情况下使用冒号,特别是为了将声明与值赋值混合使用。