你有代码应该没有什么问题的,不过最好写成以下方式: Private Sub Option1_Click(Index As Integer) Dim i As Long For i = 0 To 2 If i = Index Then Text1(Index).Visible = True '此处有时会出现控件数组2不存在 Else Text1(i).Visible = False End If Next i If Text1(Index).Visible Then If Text1(Index).Enabled Then Text1(Index).SetFocus End If End If End Sub 在程序中加入ME显的有些多余。
是你的下标错了,检查INDEX,看看到底对不对!!!
For i = 0 To me.Text1.UBound-1
这样改就好了: Private Sub Option1_Click(Index As Integer) Dim i As Long For i = 0 To me.Text1.UBound-1 me.Text1(i).Visible = False Next i me.Text1(Index).Visible = True me.Text1(Index).SetFocus End Sub
如果对内存要求不大的话,为什么不使用一个窗体变量?省好多事! dim SelectNo as integer Private Sub Option1_Click(Index As Integer) if Index<>SelectNo then me.Text1(SelectNo).Visible = false Selectno=index me.Text1(SelectNo).Visible = True me.Text1(SelectNo).SetFocus Endif End Sub
例如 在DEBUG WINDOW 中执行
?me.Text1(2).TEXT
如果提示错误说明Text1(2)确实不存在
Private Sub Option1_Click(Index As Integer)
Dim i As Long
For i = 0 To 2
If i = Index Then
Text1(Index).Visible = True '此处有时会出现控件数组2不存在
Else
Text1(i).Visible = False
End If
Next i
If Text1(Index).Visible Then
If Text1(Index).Enabled Then
Text1(Index).SetFocus
End If
End If
End Sub
在程序中加入ME显的有些多余。
Private Sub Option1_Click(Index As Integer)
Dim i As Long
For i = 0 To me.Text1.UBound-1
me.Text1(i).Visible = False
Next i
me.Text1(Index).Visible = True
me.Text1(Index).SetFocus
End Sub
dim SelectNo as integer
Private Sub Option1_Click(Index As Integer)
if Index<>SelectNo then
me.Text1(SelectNo).Visible = false
Selectno=index
me.Text1(SelectNo).Visible = True
me.Text1(SelectNo).SetFocus
Endif
End Sub