[玻璃鱼V]“控件数组元素不存在”的问题
我在Form_Load()中动态添加了ComboBox数组控件分别为Combo(1)\Combo(2)\Combo(3),调试时运行没问题。可是在Combo_chang(Index as integer)中需要读取判断Combo(3).Text的时候就报错:控件数组元素不存在
改怎么办呢?
代码如下:
Private Sub Form_Load() ’动态生成ComboBox数组控件,其他略
Dim intTempYear() As Integer
Dim intTempMonth() As Integer
Dim IsAt As Integer
Dim TmpFileType As FileType
Dim TmpLblName()
For i = 1 To 2
Load Combo(i)
Combo(i).Move FormLeft + (i - 1) * ComboWidth, FormTop, ComboWidth
Combo(i).Visible = True
Next i
reco.Open "Select * from " & RecordName, conn, 1, 1
ReDim intTempYear(1)
intTempYear(0) = reco("Year")
Combo(1).AddItem intTempYear(0)
Combo(1).Text = intTempYear(0)
reco.movenext
Do Until reco.EOF
For i = 0 To UBound(intTempYear)
If reco("Year") <> intTempYear(i) Then
IsAt = IsAt + 1
End If
Next i
If IsAt >= UBound(intTempYear) + 1 Then
Combo(1).AddItem reco("Year")
ReDim intTempYear(UBound(intTempYear) + 2)
intTempYear(UBound(intTempYear) + 1) = reco("Year")
IsAt = 0
Else
IsAt = 0
End If
reco.movenext
Loop
reco.movefirst
ReDim intTempMonth(1)
intTempMonth(0) = reco("Month")
Combo(2).AddItem intTempMonth(0)
Combo(2).Text = intTempMonth(0)
reco.movenext
Do Until reco.EOF
For i = 0 To UBound(intTempMonth)
If reco("Month") <> intTempMonth(i) Then
IsAt = IsAt + 1
End If
Next i
If IsAt >= UBound(intTempMonth) + 1 Then
Combo(2).AddItem reco("Month")
ReDim intTempMonth(UBound(intTempMonth) + 2)
intTempMonth(UBound(intTempMonth) + 1) = reco("Month")
IsAt = 0
Else
IsAt = 0
End If
reco.movenext
Loop
reco.Close
Load Combo(3)
Combo(3).Move Me.Width \ 15 - FormLeft - ComboWidth, FormTop, ComboWidth
Combo(3).Visible = True
reco.Open "Select * from UserSet where UserName='" & RecordName & "'", conn, 1, 1
If Not reco.EOF Then
For i = 1 To 9
If reco("LblName" & i) <> "" Then
intLblNameNum = intLblNameNum + 1
End If
Next i
ReDim strOrder(intLblNameNum)
Combo(3).AddItem "日期"
For i = 1 To 9
If reco("LblName" & i) <> "" Then
Combo(3).AddItem reco("LblName" & i)
strOrder(i) = reco("LblName" & i)
End If
Next i
Combo(3).AddItem "总计"
Combo(3).Text = "日期"
Else
MsgBox "用户名错误!"
End
End If
End Sub
Private Sub ShowNum()
Select Case Combo(3).Text
Case "日期"
strByOrder = "Day"
Case strOrder(0)
strByOrder = "Num1"
Case strOrder(1)
strByOrder = "Num2"
Case strOrder(2)
strByOrder = "Num3"
Case strOrder(3)
strByOrder = "Num4"
Case strOrder(4)
strByOrder = "Num5"
Case strOrder(5)
strByOrder = "Num6"
Case strOrder(6)
strByOrder = "Num7"
Case strOrder(7)
strByOrder = "Num8"
Case strOrder(8)
strByOrder = "Num9"
Case "总计"
strByOrder = "NumAll"
End Select
If reco.state = 1 Then reco.Close
reco.Open "Select * from " & RecordName & " where Year=" & Combo(1).Text & " and Month=" & Combo(2).Text & " order by " & strByOrder, conn, 1, 1
If Not reco.BOF Or reco.EOF Then
Do Until reco.EOF
LblNumShow(1).Caption = LblNumShow(1).Caption & reco("Day") & "日" & Chr(10) & Chr(13)
For i = 1 To intLblNameNum
LblNumShow(i + 1).Caption = LblNumShow(i + 1).Caption & reco("Num" & i) & Chr(10) & Chr(13)
Next i
LblNumShow(intLblNameNum + 2).Caption = LblNumShow(intLblNameNum + 2).Caption & reco("NumAll") & Chr(10) & Chr(13)
reco.movenext
Loop
Else
MsgBox "无记录!"
End If
reco.Close
End Sub
Private Sub Combo_Change(Index As Integer)
Call ShowNum
End Sub
其实不单控件数组元素‘3’不存在,其实Combo(1)和Combo(2)一样无法得到取值。