我在Access中创建一个表单,用作教室资料的订单。我列出了可用的资源,并在资源旁边的文本框中输入了他们想要的数量。
我的VBA代码使用以下内容检查是否有任何条目。 (我使用Nz()来允许Null结果):
QuantCheck = Nz(Box1.Value, 0) + Nz(Box2.Value, 0) + Nz(Box3.Value, 0)
其中" QuantCheck"是我在IF语句中使用的变量,它开始了工作流程:
If QuantCheck > 0 Then
我想通过使用某种循环语句来清理它,但是我无法从字符串中提取.value。我会喜欢下面的内容,我可以将其合并到一个循环中:
"Box"&VariableNumber.Value
据我所知,我无法使用字符串(连接或其他方式)作为.value调用的基础。
有趣的是, 是一种在使用SQL语句时实现此目的的方法。我在代码的其他地方有这个很好地工作:
SQLStr = "INSERT INTO OrderRequests VALUES (cbSchool, txtName, Title" & x & ".caption, Box" & x & ")"
这里我有一个变量" x"随着每个循环的增加,标题行和Box行都会增加。
感谢任何帮助。
答案 0 :(得分:1)
我建议你使用控件的Tag属性。 Put" QuantCheck"在要包含的任何控件的Tag属性中。然后
Function QuantitiesExist(frm As Form) As Boolean
Dim Ctrl As Control
Const sQUANTCHK As String = "QuantCheck"
For Each Ctrl In frm.Controls
If Ctrl.Tag = sQUANTCHK Then
If Nz(Ctrl.Value) > 0 Then
QuantitiesExist = True
Exit For
End If
End If
Next Ctrl
End Function
现在您可以获得自我记录代码
If QuantitiesExist(Me) Then
当您添加/删除/更改控件时,您不必编辑代码。只需使用正确的标签设置新控件即可。
答案 1 :(得分:0)
你可以循环控制以检查名称,然后如果它是你想要对它采取行动的那个,这是你在想什么?
Dim Ctrl As Control
For Each Ctrl In Me.Controls
If Ctrl.Name = "TxtPath" Then ' "Box" & VariableNumber Then
MsgBox Ctrl.Value
End If
Next