首页 > 解决方案 > MS Access 2016 引用了多个同名但后缀不同的文本框(例如 Cal1...Cal33)

问题描述

我有一个简单的 for/next 循环,针对两个组合 ctrls(cbofrom 和 cboto)评估 33 个表单备忘录字段(日历框)(Cal1...Cal33)。cbo 值只是 1 到 33。目的是在备注字段 (Cal1...Cal33) 等于 cboto 时简单地将文本从一个备注字段移动到另一个备注字段:

Dim i As Integer
For i = 1 To 33
i = 1
If Me.Cal&(i) = Me.cboto Then Me.Cal&(i) = me.cal & Me.cbofrom
Next I

VBA 似乎不想连接字段的名称 (Cal1...Cal33) 作为循环的一种方式。任何的意见都将会有帮助。 添加了日历布局的图像 - 参见第 5 块 (Cal5)

标签: vbaloopsms-access

解决方案


Controls您可以通过窗体集合中的名称引用控件。与控制Me.Controls("Cal" & 27)相同Me.Cal27

Dim i As Integer
For i = 1 To 33
    'i = 1 ' do not change the value of your loop variable here
    With Me.Controls("Cal" & i)
        If .Value = Me!cboto.Value Then
            .Value = Me.Controls("Cal" & Me!cbofrom.Value).Value
        End If
    End With
Next i

推荐阅读