【问题标题】:Getting .value property when using a string and variable使用字符串和变量时获取 .value 属性
【发布时间】:2016-05-13 14:17:14
【问题描述】:

我正在 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”,它随着每个循环而增加,以更改标题行和框线。

感谢任何帮助。

【问题讨论】:

    标签: vba ms-access


    【解决方案1】:

    我建议你使用控件的 Tag 属性。将“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
    

    当您添加/删除/更改控件时,您不必编辑代码。只需使用适当的标签设置新控件即可。

    【讨论】:

      【解决方案2】:

      您可以循环检查名称上的控件,然后如果它是您想要对其执行操作的控件,您是否正在考虑这个?

      Dim Ctrl As Control
      
      For Each Ctrl In Me.Controls
          If Ctrl.Name = "TxtPath" Then ' "Box" & VariableNumber Then
              MsgBox Ctrl.Value
          End If
      Next
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-29
        • 2020-06-20
        • 1970-01-01
        • 2019-06-23
        • 2021-10-23
        • 1970-01-01
        • 1970-01-01
        • 2022-01-05
        相关资源
        最近更新 更多