ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 40631|回复: 79

[分享]用VB一步一步创建vbaTimer

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-7-12 13:35 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:封装
<p><strong>控件的VB6源代码</strong> </p><p></p><p><font size="5">达到上传限制了,我们楼下继续。</font><br/></p><br/>
[此贴子已经被作者于2008-7-17 10:43:21编辑过]


[ 本帖最后由 Moneky 于 2010-11-2 16:39 编辑 ]

[分享]用VB一步一步创建vbaTimer

[分享]用VB一步一步创建vbaTimer

[分享]用VB一步一步创建vbaTimer

[分享]用VB一步一步创建vbaTimer

[分享]用VB一步一步创建vbaTimer

[分享]用VB一步一步创建vbaTimer

[分享]用VB一步一步创建vbaTimer

[分享]用VB一步一步创建vbaTimer

[分享]用VB一步一步创建vbaTimer

[分享]用VB一步一步创建vbaTimer

[分享]用VB一步一步创建vbaTimer

[分享]用VB一步一步创建vbaTimer

RL3CBghH.rar

9.55 KB, 下载次数: 693

[分享]用VB一步一步创建vbaTimer

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-7-12 13:39 | 显示全部楼层

接着楼上继续,是否发现上面向导的左边列表框中没有ShowAbout呢?确实没有,因为ShowAbout是我们自己想的一个方法名称,不是系统内置的。没有也不用着急,我们让向导继续,单击下一步,向导也是允许我们创建自定义接口的,如图在这个窗体中,先单击新建按钮,再在弹出的窗口中的名称中输入ShowAbout,下面选择 方法 (因为我们要给vbaTimer新增一个自定义方法),单击确定回到向导,这一步完成,现在继续单击下一步,向导现在看起来和下图差不多


这一步是设定自定义控件的各个属性、方法、事件与工程中包含的系统内置控件的个属性、方法、事件的映射关系。对于我们这个vbaTimer来说,我们将Eanbled映射为Timer的Enabled(当我们设定vbaTimer的Enabled时实际上是在设定Timer控件的Enabled,另外两个类似),Interval映射为Timer的Interval,Timer事件映射为Timer控件的Timer事件,至于那个ShowAbout没有什么可映射的,我们可以留着他,向导的下一步就会让我们处理。设定好映射关系后,继续单击向导的下一步,并在下一步进行如下图所示的设定:


由于我们只需要这个ShowAbout方法显示一个对话框,这里的返回值类型可以随便设定(这里我选择了Msgbox函数的返回类型),说明文字也可以随意。

好啦!到这里再次单击向导的下一步就完成了!至此我们的这个自定义控件vbaTimer已经可以像vb自带的Timer一样进行工作了。

我们在现有的工程基础上,添加一个测试工程,单击VB工具栏上的来添加一个工程,然后关闭自定义控件的设计器窗口(如果不关闭,则不能在测试工程中添加自定义控件——控件工具箱中显示为灰色)

往测试工程的窗体(Form1)上添加一个自定义控件(现在在Form1上只看到几个调节大小的小黑点)

现在看看自定义控件有没有用,我们双击自定义控件,在控件的Timer事件中写入 Me.caption=now,然后再在属性窗口中设定自定义控件的Interval属性为100,

最后在工程管理器中设定这个测试工程为启动,方法如下图: 

再运行测试工程就可以发现窗体的标题栏中在显示变化的时间日期了。


[此贴子已经被作者于2008-7-15 12:29:15编辑过]
aXIVrTIw.jpg
W1HIM2Xc.jpg
QpOxIujE.jpg
4Bngceo4.jpg
FcmWplUw.jpg
eDE52Mpx.jpg
1lo5FUja.jpg
076QAuI5.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-7-12 13:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

看了上面的测试工程,细心点就会发现现在自定义控件放到窗体上后什么都没有,只有几个调节大小的调节方块,另外工具栏上显示的也是系统默认的图标,这是因为我们没有设定自定义控件的两个属性
picture属性是自定义控件的背景图片,ToolboxBitmap是控件在控件工具箱中显示的图片,现在创建一个定时器的图片(我是通过抓图获取的),注意大小尺寸。然后把自定义控件的那两个属性设定为你创建的图片文件。OK,我们再关闭自定义控件设计器,回到测试工程中看看,变成这样了?

到这里,已经快要完工了,不过我刚刚忘记还有一个ShowAbout了,现在让我们回到自定义控件的代码,在代码中找到

'注意!不要删除或修改下列被注释的行!
'MemberInfo=8
Public Function ShowAbout() As Long

End Function

在这个ShowAbout函数中写入

    ShowAbout = MsgBox("这个控件有Monkey创建!用于VBA的Timer控件", vbInformation + vbOKOnly, "关于vbaTimer")

由此可以看出系统处理 控件方法的方式是 一个函数(Function),难怪向导当时要我们设定返回值类型,还可以添加参数。

另外在测试工程中我们的vbaTimer在窗体上的大小是可以改变的,而Timer控件的大小不能改变,如果需要让vbaTimer不能改变大小,则只需要回到自定义控件的代码中写入:

Private Sub UserControl_Resize()  '改变大小是自动重设大小为自定义大小
    UserControl.Height = 435'这里的数字由背景图而定,可以随意设置
    UserControl.Width = 465
End Sub

下一楼就说说如何发布控件,完成最后的工作。

[此贴子已经被作者于2008-8-15 7:51:19编辑过]
TqmKyHQB.jpg
xIcJuwHt.jpg
P0oABYG2.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-7-12 13:41 | 显示全部楼层

最后一楼,发布控件。

楼上的所有操作我们都使用的是系统自动的名称(Name),现在我们把UserControl1 的Name设定为 vbaTimer,然后保存工程1,工程名也为 vbaTimer 。

依次单击菜单 【文件】→【生成vbaTimer.ocx...】就可以生产vbaTimer.ocx了

生成后,用 regsvr32  注册(我生成在C盘根目录,在运行对话框中输入 regsvr32 c:\vbatimer.ocx  再运行就完成了控件注册) ,注册后就可以在ExcelVBA中进行使用了

该控件的VB6源码在顶楼最前面

[此贴子已经被作者于2008-7-15 12:32:41编辑过]
pMmTl8HA.jpg
NW5R6yoo.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-7-12 13:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

对情况估计不足,多占了一个位置,就用来总结吧。

首先这个控件并没有什么技术含量,因为所有的一切都是引用的VB6自带的Timer控件,如果不是加入一个ShowAbout,和不能调整控件大小的功能的话,根本就不用手工写什么代码。

其次,VB确实是个好东西,可以说是傻瓜式的的开发工具,由这个控件的制作过程可见一斑,向导及其强大!

最后,第一次写这么长,而且没有文采可言,估计能看到这句话的朋友不多,如果让山菊花老师写的话,看起来肯定是一种享受。望大家多多指教,欢迎拍砖。

[此贴子已经被作者于2008-7-12 15:28:45编辑过]

TA的精华主题

TA的得分主题

发表于 2008-7-12 13:44 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-7-12 13:48 | 显示全部楼层
能做一个我们直接能用的么?谢谢,一直想要这个。系统里只有excel,没有vb环境

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-7-12 13:54 | 显示全部楼层
QUOTE:
以下是引用shaowu459在2008-7-12 13:48:34的发言:
能做一个我们直接能用的么?谢谢,一直想要这个。系统里只有excel,没有vb环境

你需要的在这里http://club.excelhome.net/viewthread.php?tid=327339&extra=&page=1#327339

TA的精华主题

TA的得分主题

发表于 2008-7-12 17:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-7-14 13:26 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 01:17 , Processed in 0.052891 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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