如果我有一个字符串“cboEnoughMoney(0)”,是否可以从我的表单cboEnoughMoney
中的控件数组中检索控件?
在我的代码中,我尝试以这种方式引用控件:
frm.Controls(sControlName).ListIndex = -1
在这种情况下, sControlName
是“cboEnoughMoney(0)”,我收到一个错误,指出没有找到控件。
在代码中已经完成的是......
dim ctlData as string
If Frm.Controls(RS!CTRLname).ListIndex > 0 Then
CtlData = Frm.Controls(RS!CTRLname).Value
Else
CtlData = ""
End If
我知道如何用cboEnoughMoney(0)做到这一点......
我假设我可以按照你的例子检查
if instr(1,RS!CTRLname, "(")
但如果有,我将如何在frm中引用该特定控件
答案 0 :(得分:2)
您无法通过(index)
在查找中使用.Controls
部分。
您可以手动循环播放它们鉴于您可以安全地假设任何具有(
的控件名称是一个数组成员,因此将具有Index
属性匹配:
Private Function GetControl(ByVal name As String) As VB.Control
Dim pos As Long: pos = InStr(name, "(")
If pos = 0 Then
Set GetControl = Me.Controls(name) '// non array
Else
Dim index As Long
index = Val(Mid$(name, pos + 1)) '// get index #
name = Left$(name, pos - 1) '// get base name
For Each GetControl In Me.Controls
If (GetControl.name = name) Then
If (GetControl.index = index) Then Exit Function
End If
Next
Set GetControl = Nothing
End If
End Function
然后:
GetControl("cboEnoughMoney(1)").ListIndex = -1
答案 1 :(得分:2)