通过 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...")
我有两个建议。如果有一个有效,请告诉我,我会编辑我的答案以仅包含有效的那个。
尝试更改 theForm.txtLongitude.Value = Me.lblLongitude.Caption
到 Forms!theForm!txtLongitude.Value = Me!lblLongitutde.Caption
和 theForm.txtLatitude.Value = Me.lblLatitude.Caption
到 Forms!theForm!txtLatitude.Value = Me!lblLatitude.Caption
如果您已经尝试过或者它不起作用,请尝试声明变量和 "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
希望这是有道理的。我很沮丧,我无法弄清楚这一点。我有一个简单的 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...")
我有两个建议。如果有一个有效,请告诉我,我会编辑我的答案以仅包含有效的那个。
尝试更改
theForm.txtLongitude.Value = Me.lblLongitude.Caption
到Forms!theForm!txtLongitude.Value = Me!lblLongitutde.Caption
和theForm.txtLatitude.Value = Me.lblLatitude.Caption
到Forms!theForm!txtLatitude.Value = Me!lblLatitude.Caption
如果您已经尝试过或者它不起作用,请尝试声明变量和 "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