我希望有人可以提供帮助,我是编程新手,我的问题是:
表单上的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,依此类推)
答案 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