ad

达人之路《Excel 管理信息处理与实践教程第二版——全面兼容2016》_10.2.3 事件程序

网友投稿 59 2023-11-13

【摘要】 本书摘自《Excel 管理信息处理与实践教程第二版——全面兼容2016》一书中第5章,第1节,刘启刚著。

10.2.3 事件程序

如需做到用回车来控制程序的滚动和停止,就要将焦点设置在“开始”那个按钮上,按下回 车,Label1 开始滚动显示,它即变为“抽奖”,再按下回车,Labell 就停在某个名字上。依照这 个思路,我们为 CommandButton1, 也就是现在显示“开始”的按钮编程如下:

Private Sub CommandButton1_Click()

If CommandButton1.Caption =“开始”Then

'开始滚动,将按钮文字设为“抽奖”

达人之路《Excel 管理信息处理与实践教程第二版——全面兼容2016》_10.2.3  事件程序

CommandButton1.Caption = “抽奖”

Call name_move

'设置每50毫秒触发一次name_move()

timerset =SetTimer(0,0,50,AddressOfname_move)

Else

'停止滚动,将按钮文字设为“开始”

CommandButton1.Caption =”开始”

'停止定时器工作

timerset =KillTimer(0,timerset)

'将新抽出来的人姓名单位放入列表

listnum =listnum +1

TextBox1.Text =TextBox1.Text &listnum&""&Label1.Caption &Chr(13) namelist =namelist&Labell.Caption

End If

End Sub

因为 Excel内置的定时函数定时精度最快只有1秒,因此如果使用 Excel的定时器,最 快 Labell 每秒最多只能显示一个名字,这就起不到抽奖的作用了。因此必须借助外部函数 来达到这一要求。在 Windows编程中,通过动态链接库来调用外部函数是可行的方法,借 助这种方法,Windows可以在软件之间实现代码复用,同时也为编程提供了无穷无尽的 可能性。Windows 自身带有一系列函数库,这些函数库比起第三方提供的函数库而言, 更加稳定,兼容性也更好。因此我们这里调用的函数 SetTimer() 和 KillTimer(),

SetTimer() 和 KillTimer() 是 Windows 函数,而不是 Excel内置函数。在使用Windows 函 数库里面的函数之前,需要在通用的声明部分先进行声明,让 Excel知道调用哪个动态链 接库:

Private Declare Function SetTimer Lib"user32"(ByValhwnd As Long,ByValnIDEvent As Long,

ByValuElapse As Long,ByVallpTimerFunc As Iong)As Long

Private Declare Function KillTimer Lib"user32"(ByValhwnd As Long,ByValnIDEvent As Long) As Long

Public timerset As Long

Public listnum As Integer

Public namelist As String

引入 SetTimer 和 KillTimer 主要起到控制定时器的作用。当我们用 SetTimer 的时候,计算 机内置的时钟被安置了一个小闹钟,每当设定的时间间隔到达,比如本例的50毫秒,就会触发 一个函数,比如本例的 name_move, 而我们要做的事情就是为每50毫秒触发的这个宏 name_ move 编写程序。另外 一 个 KillTimer 函数则取消这个定时器,也就不再每50毫秒触发

name move 。

_

在声明中我们可以看到这两个函数都是来自Windows 的 User32 库 ,Windows 还提供了

很多类似的类库,每个类库又包含了很多有用的函数,是我们在运用Excel 时 除 Excel 函数库 之外的庞大宝库,对 Windows 类库的运用也是任何 Windows 高级程序员都应该掌握的知识。

在 Textboxl.text 的设置上,我们使用了CHR(13) 来产生一个回车,让后面的加上来的名 字和单位处于下面的一行,这样才能比较整齐地排列。CHR() 函数根据数字,从 ASCⅡ 码 表 中检出相应的字符。编程中常用的还有CHR(7), 让喇叭发出 BEEP 的 声 音 ,CHR(10), 代 表 换行。需要特别说明的是,在所有的计算机语言中,ASCⅡ 码10都是代表换行符。在键盘上 没有对应按键,只在各种计算机语言程序中出现。在VB 及 以 前 的BASIC 版本中,CHR(10)

都是调用ASCⅡ 码10,即换行符。而“回车”CHR(13) 与“换行”CHR(10) 的区别在于“回车” 代表上一句终了,再输入或输出就是下一句了。而“换行”时前一句并没有结束,前后还是一句 话,仅仅是从形式上“换行”后的部分放到下一行,看起来跟回车的形式一样。但是,VBA 中 要

换行时,却是要CHR(13) 或 者 CHR(10)+CHR(13), 单独 一 个CHR(10), 已经不能换行了。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 [email protected] 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:达人之路《Excel 管理信息处理与实践教程第二版——全面兼容2016》_6.5 数据分析案例——三维地图
下一篇:达人之路《Excel 管理信息处理与实践教程第二版——全面兼容2016》_3.3.1 文 本 函 数 基 本 格 式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×