为变量

时间:2017-11-02 13:44:02

标签: vba ms-access

我希望有人可以提供帮助,我是编程新手,我的问题是:

表单上的40个复选框一个接一个,需要检查布尔值" True"或"错误" (由用户选中或取消选中),以便我可以为每个" True"运行单独的代码。案件。

我想要包括一个柜台"我"在" MS Access复选框参考"我用它来变量,给我给定复选框的值。以下代码应该显示我尝试完成的任务,任何人都能指出我正确的方向,而不使用非常先进的解决方案?我认为这是因为它无法在一个步骤中执行所有这些操作,或者因为它只将变量的输入视为字符串而不是执行命令:

Do While Flag = True

Dim CheckboxVar As Boolean
i = i + 1

If i = 40 Then
    Flag = False
End If

CheckboxVar = "Me.Checkbox" & i & ".Value"
AddWhereSQL = SQLBuilder (CheckboxVar)
Loop

(检索Checkbox1的值并将其发送到SQLBuilder,检索Checkbox2并将其发送到SQLBuilder,依此类推)

3 个答案:

答案 0 :(得分:5)

循环显示如下所示的复选框:

Sub Test()
    Dim ctrl As Control

    For Each ctrl In Me.Controls
        If TypeOf ctrl Is CheckBox Then
            If ctrl.Value = True Then
                'do something
            End If
        End If
    Next ctrl
End Sub

为您的复选框命名“Checkbox1”,“Checkbox2”等。很烦人,而不是最好的命名做法。上面的代码会找到表单上的每个复选框,但您可以轻松地将其限制为具有特定标记的所有复选框。例如。

答案 1 :(得分:2)

要遍历控件,您可以执行以下操作:

Dim i As Long
For i = 1 To 40
    If Me.Controls("CheckBoxControlName" & i).Value = -1 Then
        'The control value is True
    End If
Next i

如果代码放在标准模块中,请将Me更改为Forms!YourFormName

答案 2 :(得分:0)

我认为你需要一个“for”循环。也许是这样的:

CheckboxVar = " WHERE "
For i = 1 to 40
    CheckboxVar = Me.Controls("Checkbox" & i).Value = True & " AND " & checkboxVar
next