【问题标题】:Access 2013: Reference with variables to an object with VBAAccess 2013:使用 VBA 将变量引用到对象
【发布时间】:2014-12-09 21:55:33
【问题描述】:

我正在尝试使用 VBA 进行循环并检查不同的访问字段(名为“区域”)是否为真或假。

如果三个区域为 True,我的 Sub 应返回它们的名称(即“AreaA、AreaF、AreaG”)。

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

Set chkObject = "[Forms]![1110 Datos]![Area_" & Area(i) & "]"

这些是一些现有的对象(复选框):

[表格]![1110 数据]![Area_Cnc]

[Forms]![1110 Datos]![Area_Emb]

[Forms]![1110 Datos]![Area_Ens]

这是我的代码:

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

有谁知道如何引用这个?

提前致谢!!

【问题讨论】:

  • 你不需要“设置”关键字,因为 chkObject 接缝是一个字符串
  • Forms("1110 Datos").Controls("Area_" & Area(i)).Value
  • 它有效,蒂姆!非常感谢!

标签: arrays vba object ms-access reference


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    相关资源
    最近更新 更多