设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1324|回复: 6
打印 上一主题 下一主题

[窗体] 问个关于窗体事件的问题,怎么才能在程序中设置事件?

[复制链接]
跳转到指定楼层
1#
发表于 2011-8-25 19:10:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一个窗体事件,比如form_load,在设计模式下,属性窗口中的事件标签里选择事件过程,也就是VBA。
此时,该事件属性里的内容是 “事件过程”。打开窗口时,Form_load就运行。
如果把该事件属性里的内容删除,那么即使Form_load函数体还在,那么也不会被执行。
大概可以理解为,系统没有把该函数体和该事件联系在一起。
问题是:能不能在程序中实现这种联系?
比如一个按钮,在需要的时候设置点击事件有效,甚至可以动态转换点击事件调用的函数。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2011-8-25 19:59:29 | 只看该作者
很简单。
设置me.Onload="你的函数名()" 即可
你的函数名为你在窗体上设置 好的一个函数
3#
 楼主| 发表于 2011-8-25 20:13:20 | 只看该作者
没看懂,比如我的窗体VBA代码如下:
Private Sub Form_Load()
    msgbox "OK  1"
End Sub
那么我打开窗体时,显示“ok”
现在我加一个过程
sub test()
    msgbox “OK 2”
end sub
那么那条me.Onload="test()"加到哪里?
是这样吗?
Private Sub Form_Load()
   me.Onload="test()"
End Sub
我试了没出错,也没显示“ok 2”
4#
发表于 2011-8-25 20:17:55 | 只看该作者
自定义一个过程或者函数调用即可。
Function test()
Msgbox"这是一个测试窗体"
End Function
然后在加载事件里输入:=test()即可。
如果是在Form_Onload()事件里写的话,则可以直接用Call Test。
5#
 楼主| 发表于 2011-8-25 20:32:34 | 只看该作者
楼上的误会了我的意思。
在Form_load里调用自定义过程是没问题的。
我是说,打开窗体事件可以调用VBA或者宏,但是这个选择是在窗体设计模式下决定的。
也就是窗体打开事件里出现的是 过程 还是 宏。
我想知道用编程的方式来决定一个事件调用的是宏还是VBA。
6#
发表于 2011-8-27 14:32:53 | 只看该作者
不必须在设计模式进行,可以这样测试:
在窗体运行期间,在立即窗口分别运行如下代码:
1、设置为事件过程:
forms!窗体名.form.onload="[Event Procedure]"
2、设置为宏:
forms!窗体名.form.onload=“这里写入宏名”
3、设置为函数
forms!窗体名.form.onload="=函数名()"
当然以上动态设置是不什么保存到测试窗体中的。
7#
 楼主| 发表于 2011-8-29 17:47:44 | 只看该作者
收到,一会儿测试一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-15 12:34 , Processed in 0.089781 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表