访问VBA尝试从另一个表单引用文本框

MAW*_*656 1 ms-access vba access-vba

我正在使用Access VBA,我正在尝试修改现有代码以添加弹出框.此弹出框是另一种形式,当用户单击此表单上的按钮时,我希望填充基本表单上的文本框.之后弹出窗口消失,然后我需要从基本表单上的文本框中访问该值.

顺序应如下所示:
1)基本表单按钮单击调用模式弹出窗口
2)单击弹出窗口上的按钮将值保存到基本表单的文本框,然后返回控件.
3)基础形式然后使用此值来做某事.

我有一些代码,但它不能正常工作.任何人都可以看到这里遗失的东西,并帮助我纠正?

基本表格

Sub base()
    DoCmd.OpenForm "PaperType", , , , , acDialog

    MsgBox Me.TheAnswer           'This line gives a null error
End Sub
Run Code Online (Sandbox Code Playgroud)

弹出窗体

Private Sub btnRolls_Click()
    'Me.Tag = 1
    Forms!ReceiptDetail_sfrm!TheAnswer = 1
    Me.Visible = False
End Sub

Private Sub btnSheets_Click()
    'Me.Tag = 4
    Forms!("ReceiptDetail_sfrm").TheAnswer = 4
    Me.Visible = False
End Sub
Run Code Online (Sandbox Code Playgroud)

Min*_*lux 8

你可以这样做,你可能需要这样的东西:

Private Sub btnRolls_Click() Forms!ReceiptDetail_sfrm!TheAnswer = 1 Forms!ReceiptDetail_sfrm.Refresh Me.Visible = False End Sub

我做了很多次你正在做的事情.我现在不是为了一个例子来检查我的代码,但它是可行的.


Rol*_*ble 5

我倾向于做的是隐藏弹出窗口,然后从中读取:

主要形式:

Private Sub base()
   DoCmd.OpenForm "PaperType", , , , , acDialog
   'code waits for modal hide here
   Me!TheAnswer = Forms("PaperType").SomethingOnThatFormThatStoresTheValue
   DoCmd.Close acForm, "PaperType", acSaveNo
   MsgBox Me.TheAnswer
End Sub
Run Code Online (Sandbox Code Playgroud)

弹出

Private Sub btnRolls_Click
   'may be hidden control
   Me.SomethingOnThatFormThatStoresTheValue = TheValueToRead
   Me.Visible = False
End Sub
Run Code Online (Sandbox Code Playgroud)

确保 A) 您的弹出窗口无法从表单本身关闭,或 B) 您的调用代码将处理尝试读取不再加载的内容(或两者兼有)的错误。