使用字符串和变量时获取.value属性

时间:2016-05-13 14:17:14

标签: vba access

我在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行都会增加。

感谢任何帮助。

2 个答案:

答案 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