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)
你可以这样做,你可能需要这样的东西:
Private Sub btnRolls_Click()
Forms!ReceiptDetail_sfrm!TheAnswer = 1
Forms!ReceiptDetail_sfrm.Refresh
Me.Visible = False
End Sub
我做了很多次你正在做的事情.我现在不是为了一个例子来检查我的代码,但它是可行的.
我倾向于做的是隐藏弹出窗口,然后从中读取:
主要形式:
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) 您的调用代码将处理尝试读取不再加载的内容(或两者兼有)的错误。