最简单的方法是使用全局变量传递,简单明了,无需复杂代码,但多窗体情况下无法确定回传对象。
例:有三个窗体
FormA; FormB;FormC,都会调用窗体FormD,
FormD在计算出值后无法确定回传给哪个窗体。无需复杂代码,使用
Docmd.OpenForm 的 OpenArgs参数来传递参数,就可很好的解决。
发送窗体
FormA; FormB; FormC
Dim sParameter as String
sParameter = Me.Name & ";" & ActiveControl.Name & ";"
DoCmd.OpenForm "FormD", acForm, , , , , sParameter
接收窗体
FormD - 接收
Private Sub Form_Load()
Dim sParameterA() As String
sParameterA = Split(Me.OpenArgs, ";")
ControlName.Value = Forms(sParameterA(0)).Controls(sParameterA(1)).Value
End Sub
接收窗体
FormD - 回传
Private Sub Form_Close()
Dim sParameterA() As String
sParameterA = Split(Me.OpenArgs, ";")
Forms(sParameterA(0)).Controls(sParameterA(1)).Value = ControlName.Value
End Sub
该方法代码简单、回传明确、便于窗体的重复调用。