excel出现中文乱码的解决教程-英雄云拓展知识分享
127
2023-11-07
【摘要】 本书摘自《Excel VBA跟卢子一起学早做完,不加班(实战进阶版)》一书中第2章,第6节,陈锡卢、李应钦著。
2.6 当单元格内容或链接改变时触发事件
学习了 Worksheet.SelectionChange 触发事件,接下来学习Worksheet.Change 事件。
Worksheet.C hange 事件的触发要素为,当单元格被编辑时或者工作表上的链接数据刷新时 引起单元格内容改变时都能触发该事件,先来看看这个事件的过程外壳。
当用户更改工作表中的单元格或外部链接引起单元格内容的更改时发生此事件
Private Sub Worksheet_Change(ByVal Target As Range)
Statements(中间代码语句)
End Sub
2.6.1 汇率价格填写
现将该事件运用到实际案例中来,要求:当在指定区域输入一个数值之后按照指定(内置) 汇率将转换后的价格写入单元格中,如图2-8所示。
示例过程如代码2-4所示。
代 码 2 - 4 在 F 列指定范围输入后自定计算汇率价格
001|Private Sub Worksheet_Change(ByVal Target As Range)
002| Dim MxRAs Integer
003| Const HuiLv As Single=35.314:Const MnR As Byte=16
004| With Target
0051
If.Count>1Or.Column~ 6 Then Exit Sub
0061
MxR=Cells(Rows.Count,1).End(xIUp).Row-5
007| If.Row
008| If.Value>0 Then
009| Application.EnableEvents =False
010| .Value =Format(.Value /HuiLv,"#,##0.00")
011| Application.EnableEvents =True
012| End If
013| End If
014 End With
015|End Sub
代码2-4示例过程执行情况下如下。
(1)声明了2个常数 HuiLv和MnR。HuiLv 常数为汇率比值, MnR 则是发货清单中的标 题行号。
(2)通过If.Count>1Or. Column~6 Then 语句判断选中的是否为一个单元格或选中的 不为 F 列,否则退出事件过程。
(3)接着通过Cells(Rows.Count,1).End(XIUp).Row -5语句获取清单中的有效行数并赋值 给 MxR 变量,语句中最末-5是因为在清单中 TOTAL 合计行后还有5行相关信息,该区域不 在触发区域范围内,所以将该区域放置到触发区域之外。
(4)通过If.Row(5)If.Valu e>0 该语句用于判断当前被编辑单元格按Enter 键后输入的数字是否大于0,
若 大 于 0 则 执 行 Application.EnableEvents=False (关 闭 事 件 再 次 响 应 , 防 止 死 循 环) ;再 执行 .Value=Format(.Value/HuiLv,"#,##0.00")语句,将编辑后单元格内的数值除以HuiLv 常数, 并设置其结果数字格式并将结果写入被编辑单元格内,最后重新开启EnableEvents 属性的事件 响应功能。
无 言:Worksheet.Change 事件过程中Target参数指当前被编辑的单元格对象,而不是按 Enter键后选中的单元格。
例如,当前编辑的单元格是A1, 只要双击或者按F2 键进入单元格时,该单元格都会被传 递给Target参数。当编辑完成后按Enter键 ,A1的变化刚才已经触发了WorkSheet.Change 事件, 而非由其按 Enter 键后被选中单元格触发该事件。
? 皮蛋:嗯,明白了。还有Application.EnableEvents是干什么用的呢?
无言: Application.EnableEvents 属性是这个事件中的重点语句,没有它, WorkSheet. Change事件过程将触发无限循环WorkSheet.Change事件。
皮蛋:这么厉害!那它到底作用何在?
Application.EnableEvents属性隶属于 Application 对象,该属性的作用非常明确——用于指 定是否启用(响应)事件,其赋值只有2个: True或 False, 语法如下。
启用或关闭事件
Application.EnableEvents=True|False
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~