我在Module1里定义一个
Type myUDT
strA As String
lngB As Long
End Type在Form1里
Public aa As myUDT运行时提示“常数、固定长度字符串、数组、用户定义类型以及 Declare 语句不允许作为对象模块的 Public 成员”-----------------上网搜索一下,有人说可以在类里定义,我试着建一个ActiveX DLL,然后把Type定义放在里Class1里,编译成DLL,然后在工程里引用,但还是出现上面那个提示请问要如何做,麻烦讲得详细点。谢谢了
Type myUDT
strA As String
lngB As Long
End Type在Form1里
Public aa As myUDT运行时提示“常数、固定长度字符串、数组、用户定义类型以及 Declare 语句不允许作为对象模块的 Public 成员”-----------------上网搜索一下,有人说可以在类里定义,我试着建一个ActiveX DLL,然后把Type定义放在里Class1里,编译成DLL,然后在工程里引用,但还是出现上面那个提示请问要如何做,麻烦讲得详细点。谢谢了
解决方案 »
- vb6+sql 程序在执行update和insert into时报错Run-time error '40002':01000:,求解?
- 数据圆整
- 请教VB中键值的ASCII码
- 关于窗体的问题
- 如何比较时间
- 请教一个菜鸟问题!
- 上CSDN,提前过6.1,心情真的不错——送分!
- 想实现通过usb(通用串行总线架构)和计算机实现通信,比如usb口的键盘驱动程序源码最好
- 十万火急!急
- 对vb中数据趋势图控件chart的使用技巧的问题
- 编译成.exe后,连接不上oracle是怎么回事??急!!!!
- 在VB6中,对于access中的字段值为NULL时,若用语句name=rst!姓名,当变量name取到的rst!姓名为NULL时就出错,用if语句又无法判断name=N
private aa As myUDT
or
dim aa as myUDT
Type myUDT
strA As String
lngB As Long
End TypePublic aa As myUDT
Public aa As myUDT也是在Module1里定义
模块中代码:Type a
x As Integer
y As Integer
End Type
Public aa As a窗体中代码 Private Sub Form_Click()
Print aa.x, aa.y
End SubPrivate Sub Form_Load()
aa.x = 111
aa.y = 222
End Sub
'点击窗体后 打印111 222
//在Form1里
Public aa As myUDT你把public改为private即可
To rainstormmaster(暴风雨 v2.0) 我知道问题出在这,我是想知道如何才能实现
网上有人说可以通过公共类来实现,不知道哪位知道,能讲解一下
Type myUDT
strA As String
lngB As Long
End Type在Form1里
private aa As myUDT
不就行了吗
-----------------------------
模块中Type a
x As Integer
y As Integer
End TypePublic form1_a As a
Public form2_a As a你的意思是不是这样就可以了?
为什么VB有这样的限制!
Type myUDT
strA As String
lngB As Long
End TypePublic forma() As myUDT然后在窗体Form_Initialize事件中 使用redim 即可
To myjian(嗷嗷叫的老马--忙~~~~~~~~~~~~~~~) “就使用内裤来声明类型吧”,这个怎么用,能不能简单讲一下
//使用ODL语言或EditTLB软件,生成一个tlb类型库,然后在工程里引用它那么这个类型就可以在全局使用了,并且也可以作为函数的返回值.http://www.m5home.com/blog/blogview.asp?logID=329&cateID=2这个帖子里有EditTLB工具的下载及使用
TestVar = TestVar2
End PropertyPublic Property Let TestVar(ByRef vNewValue As MyUserType)
TestVar2 = vNewValue
End Property这样就可以通过Form1.TestVar访问这个变量了.PS:直接在窗体里面Public TestVar As MyUserType还是不行......
Form1 窗体的代码:Dim TestVar2 As MyUDT1Public Property Get TestVar() As MyUDT1
TestVar = TestVar2
End PropertyPublic Property Let TestVar(ByRef vNewValue As MyUDT1)
TestVar2 = vNewValue
End Property
Private Sub Command1_Click()
Form2.Show 1
End SubPrivate Sub Command2_Click()
Debug.Print TestVar.strA
End SubPrivate Sub Form_Load()
TestVar2.strA = "测试"
TestVar2.lngB = 1000
TestVar2.blnC = True
End Sub
-----Form2 窗体的代码Private Sub Command1_Click()
With Form1.TestVar
Debug.Print .strA, .lngB, .blnC
End With
End SubPrivate Sub Command2_Click()
Form1.TestVar.strA = "在 Form2 里修改过"
End Sub
结果:在 Form2 获取值正常,但无法从 Form2 修改值,请问这是怎么回事,是不是我哪里弄错了。我在 Form2 的 Command2_Click 设置断点,逐步执行,发现赋值也是执行Get,而不是Let;而获取值也是执行Get
dim I as MyUDT1 I.strA = "在 Form2 里修改过"
Form1.TestVar = I
End Sub