我想在表单模块之间传递对象。
我已经建立了一个简单的数据库来解释我遇到的问题。 我有两种形式 - > form1,form2和一个模块 - >模块1 基于我读过的线程,我相信如果我想定义一个全局对象,它应该在模块中完成,所以我把声明放在那里;
Option Compare Database
Public Type Name
First As String
Last As String
Phone As String
End Type
在form1上我有一个cmd按钮,后面有以下代码;
Option Compare Database
Dim My_Name As Name
Private Sub cmd_Button_Click()
My_Name.First = "MyFirstName"
My_Name.Last = "MyLastName"
MsgBox ("In Form1 " & My_Name.Last)
DoCmd.OpenForm "Form2"
End Sub
在我的第二张表格上;
Option Compare Database
Dim my_Name As Name
Private Sub Form_Load()
MsgBox (my_Name.First)
End Sub
在第一种形式中,我看到my_Name对象变量很好,当我将控制传递给第二种形式时,我丢失了变量。
我在对象变量和子对象上尝试过各种各样的Public,Static声明变体,但我无法弄清楚如何跨模块保留对象。
答案 0 :(得分:0)
您正在重新声明my_name。所以它影响了两个不同的东西。像乔治福尔曼和乔治福曼。
我很抱歉,自从我不得不处理此问题以来,我可以提供更多帮助。但是,似乎你的' froms'实际上是在一个'模块中宣布的。比如block -name from1。从全局范围开始,您可以在form1中引用变量。
在本例中为form1.my_name。但是,如果form1.my_name尚未实例化,则可能会导致问题。
我的建议是找到具有全局范围的模块(我不记得究竟是什么,如果你必须创建它或现在,以及什么时候它生命)。在其中声明并初始化您的变量。然后从您的事件处理程序中访问那些(" cmd_Button_Click"例如。)