Arrays Access 2013:使用变量引用具有VBA的对象

Arrays Access 2013:使用变量引用具有VBA的对象,arrays,vba,object,ms-access,reference,Arrays,Vba,Object,Ms Access,Reference,我试图用VBA做一个循环,检查不同的访问字段(名为“区域”)是否正确 如果三个区域为真,我的Sub应返回它们的名称(即“Area、Area F、Area G”) 问题是,我得到一个错误:“编译错误。类型不匹配。”在下面显示的行中,第二个“&”突出显示 Set chkObject = "[Forms]![1110 Datos]![Area_" & Area(i) & "]" 以下是一些现有对象(复选框): [Forms]![1110达托]![Area_Cnc] [Forms]![

我试图用VBA做一个循环,检查不同的访问字段(名为“区域”)是否正确

如果三个区域为真,我的Sub应返回它们的名称(即“Area、Area F、Area G”)

问题是,我得到一个错误:“编译错误。类型不匹配。”在下面显示的行中,第二个“&”突出显示

Set chkObject = "[Forms]![1110 Datos]![Area_" & Area(i) & "]"
以下是一些现有对象(复选框):

[Forms]![1110达托]![Area_Cnc]

[Forms]![1110达托]![Area_Emb]

[Forms]![1110达托]![区域]

这是我的密码:

Sub MySub()
Dim Area() As String, Vars As String, i As Integer, chkObject As Object
Dim strAreas As String
Vars = "Cnc, Emb, Ens, Esp, Fer, For, Maq, Pin, Pon, Sie, Sol, Tel, Rou"

Area = Split(Vars, ", ")
strAreas = "" 'Set blank.

For i = 0 To UBound(Area)
    Set chkObject = "[Forms]![1110 Datos]![Area_" & Area(i) & "]" 'Reference to the Object.

    If chkObject.Value = True Then
        If strAreas = "" Then 'Check if it is the first Area: "Cnc" OR "Esp"...
            strAreas = Area(i)
        Else
            strAreas = strAreas & ", " & Area(i) 'To add commas if already exists one checked: "Cnc, Esp, Sie"
        End If
    End If

If strAreas = "" Then 'If no Areas were checked...
    Debug.Print "Ningún area estaba activa."
Else
    Debug.Print strAreas 'Else, return selected Areas
End If

Next
End Sub
有人知道如何引用这个吗


提前谢谢

这是工作代码,谢谢你,蒂姆:

Sub MySub()
Dim Area() As String, Vars As String, i As Integer, chkObject As Object
Dim strAreas As String
Vars = "Cnc, Emb, Ens, Esp, Fer, For, Maq, Pin, Pon, Sie, Sol, Tel, Rou"

Area = Split(Vars, ", ")
strAreas = ""

For i = 0 To UBound(Area)
    Set chkObject = Forms("1110 Datos").Controls("Area_" & Area(i))

    If chkObject.Value = True Then
        If strAreas = "" Then
            strAreas = Area(i)
        Else
            strAreas = strAreas & ", " & Area(i)
        End If
    End If
Next

If strAreas = "" Then
    Debug.Print "Ningún area estaba activa."
Else
    Debug.Print strAreas
End If

End Sub

您不需要将“Set”关键字作为chkObject seams作为字符串
Forms(“1110 Datos”)。控件(“Area_u”和Area(i))。值
它可以正常工作!谢谢!