通过 VBA 更新另一个表单文本框中的值

Update value in another form's textbox via VBA

希望这是有道理的。我很沮丧,我无法弄清楚这一点。我有一个简单的 Access 2010 数据库。我在里面有一个简单的表格,可以帮助用户输入一些特定的信息。这种数据输入情况可能发生在数据库中的另外两个表单上。我不想拥有 "helper" 表单的两个副本,其中 VBA 代码具有硬编码的控件引用,而是希望通过使用 openArgs 参数传递调用它的表单的名称来使其更加通用.

当需要将值传回需要信息的表单时,辅助表单会尝试这样做:

Private Sub cmdOk_Click()
    Dim theFormName As String
    Dim theForm As Form

    theFormName = Me.OpenArgs
    Set theForm = Forms.Item(theFormName)

    If Not IsNull(theForm.Name) Then
        theForm.txtLongitude.Value = Me.lblLongitude.Caption
        theForm.txtLatitude.Value = Me.lblLatitude.Caption
    End If

    DoCmd.Close acForm, Me.Name, acSaveNo
End Sub

变量 theForm 被正确填充并且 theForm.Name returns 表单的正确名称因此部分工作正常。问题是 theForm.<controlName>.Value 没有。当我 运行 代码时,我得到一个

application-defined or object-defined error (Run-time Error 2465)

我尝试了从当前打开的表单到第二个打开的表单的各种控件引用排列,但我无法获得正确的语法。我试过:

theForm!txtLongitude.Value ("..can't find the field txtLongitude..")
theForm.Controls("txtLongitude").Value ("..cant find the field...")

我有两个建议。如果有一个有效,请告诉我,我会编辑我的答案以仅包含有效的那个。

  1. 尝试更改 theForm.txtLongitude.Value = Me.lblLongitude.CaptionForms!theForm!txtLongitude.Value = Me!lblLongitutde.CaptiontheForm.txtLatitude.Value = Me.lblLatitude.CaptionForms!theForm!txtLatitude.Value = Me!lblLatitude.Caption

  2. 如果您已经尝试过或者它不起作用,请尝试声明变量和 "pulling" 一种形式的值,然后再将它们放入另一种形式。 (还要确保两者的数据类型相同。)

    私人订阅 Command4_Click() 将表单名称调暗为字符串 将表单调暗为表单

        Dim txtLong As String
        Dim txtLat As String
    
        txtLong = Me.lblLongitude.Caption
        txtLat = Me.lblLatitude.Caption
    
        theFormName = Me.OpenArgs
        Set theForm = Forms.Item(theFormName)
    
        If Not IsNull(theForm.Name) Then
            theForm.txtLongitude.Value = txtLong
            theForm.txtLatitude.Value = txtLat
        End If
    
        DoCmd.Close acForm, Me.Name, acSaveNo
    
        End Sub