Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

access类模块问题

蔡小东  发表于:2011-05-16 12:46:47  
复制

首先我在excel里定义了一个my类模块

Public WithEvents cmd As CommandButton

Private Sub cmd_Click()
MsgBox cmd.Caption
End Sub

然后

Dim co As New Collection

Private Sub UserForm_Initialize()
Dim ctl As Control
Dim myc As my
For Each ctl In Me.Controls
    If TypeOf ctl Is CommandButton Then
        Set myc = New my
        Set myc.cmd = ctl
        co.Add myc
    End If
Next
End Sub

这个能正常运行

我以同样的方法在acc里定义一个person类模块,在窗体的load事件里

Dim co As New Collection

private Sub Form_Load()
Dim co As New Collection
Dim ctl As Control
Dim myc As person
For Each ctl In Me.Controls
    If TypeOf ctl Is CommandButton Then
        Set myc = New person
        Set myc.cmd = ctl
        co.Add myc
    End If
Next
End Sub

然后点击窗体上的命令按钮 没有反应 ,也不报错。有谁能告诉一下原因吗

在此谢谢了

 

Top
大肚秃秃 发表于:2011-05-16 13:29:00
窗体→属性→加载→“事件过程”

蔡小东 发表于:2011-05-16 13:55:20
还是不得行

大肚秃秃 发表于:2011-05-16 14:17:46
请上传例子

江羽 发表于:2011-05-16 14:44:37

ACCESS控件类型对象判断方式语句不一样,应改为:ctl.ControlType = acCommandButton



蔡小东 发表于:2011-05-16 16:16:04
麻烦给我看看点击下载此附件

江羽 发表于:2011-05-16 16:53:35
晕!我用的是03,看不了07以上的东东……

蔡小东 发表于:2011-05-16 16:59:41
我转换了一下点击下载此附件

江羽 发表于:2011-05-16 19:10:04

修改了一下,看看是不是你要的结果:

点击下载此附件

江羽 发表于:2011-05-16 19:27:02

1、EXCEL与ACCESS相比,我个人觉得EXCEL对于编程语句及结构要求不是很严谨,不如ACCESS;

2、ACCESS在类编程中,申明WithEvents对象后,必须触发该事件,不然封装后事件没响应;

3、能申明指定对象的,如:ctlCmd As CommandButton,就别申明为控件对象,如:ctlCmd As Control;

 



蔡小东 发表于:2011-05-17 08:28:45

我把类模块改成这样了,能运行。谢谢江老师了哈

Private WithEvents mcmd As CommandButton
Public Sub mcmd_Click()
MsgBox mcmd.Caption
End Sub
Public Property Set xx(cctl As CommandButton)
Set mcmd = cctl
mcmd.OnClick = "[Event Procedure]"
End Property
Public Property Get xx() As CommandButton
Set xx = mcmd
End Property



江羽 发表于:2011-05-17 11:12:58

只是接口方式不同,可以通过属性方法来指定对象,也可以通过方法来指定对象。



总记录:11篇  页次:1/1 9 1 :