全局声明"type"对象



我想在表单模块之间传递对象。

制作了一个简单的数据库来解释我遇到的问题。我有两个表单 ->表单 1、表单 2 和一个模块 -->模块 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对象变量很好,当我将控制权传递给第二种形式时,我丢失了变量。

我已经在对象变量和 sub 上到处尝试了许多公共、静态声明的变体,但我无法弄清楚如何跨模块保留对象。

您正在重新声明my_name。 所以它实际上是两件不同的事情。 比如乔治·福尔曼和乔治·福尔曼。

我很抱歉,我不能提供更多帮助,自从我不得不处理这个问题以来,已经有一百万年了。 但是,似乎您的"from"实际上是在"模块"中声明的,例如块 -name from1。 从全局范围内,您可以在form1中引用变量。

在这种情况下form1.my_name。 但是,如果尚未实例化form1.my_name这可能会导致问题。

我的建议是找到具有全局范围的模块(我不记得它是什么,如果你必须创建它或现在,以及它何时获得生命)。 在其中声明并启动变量。然后从事件处理程序(例如"cmd_Button_Click")中访问它们。

相关内容

  • 没有找到相关文章

最新更新