ad

《Excel VBA跟卢子一起学早做完,不加班(实战进阶版)》_2.5 选中区域时触发事件

网友投稿 64 2023-11-07

【摘要】 本书摘自《Excel VBA跟卢子起学早做完,不加班(实战进阶版)》一书中第2章,第5节,陈锡卢、李应钦著。

2.5 选中区域时触发事件。Wor hsheetSelectionChunge

该事件的作用是当选中工作表上任意一个单元格或单元格区域都会触发该事件,若没有书 写Statements (中间代码语句)时该事件将不会有任何其他响应动作。

该事件过程中存在一个 Target参数变量,其类型是 Range 对象,Target 参数传递的是选中 单元格区域并反馈给事件参数。

《Excel VBA跟卢子一起学早做完,不加班(实战进阶版)》_2.5 选中区域时触发事件

? 皮蛋: 不理解Target参数的作用。

无言:就是说当选中单元格时,过程将把选中的区域传递给Target参数,作为其具体赋 值,然后进行操作,例如显示当前账龄时间或者其他信息写入Target参数的对应区域。

2.5.1 计算欠款账龄

现在手上有一份记账工作簿,依据选中的单元格并提示其账龄及相关信息,并将账龄写入 对应的账龄单元格内。账龄按照3个月以内(0~2)、3~6个月(3~6个月)、6个月到1年(6~11 个月)、1~2年(12~23个月)、2年以上(24个月及以上)的时间段划分。

无言:首先打开VBE 窗口后双击资源管理器里的【账龄提示工作表】,然后选择对象列表 中的Worksheet就会自动在代码窗口中写入默认Worksheet_SelectionChange事件的过程外壳。接 着书写需要的语句代码,如代码2-1所示。以后对于插入对象的事件操作都是如此操作,以后 这部分会略过不提。

皮蛋:嗯,双击对象,选择对象,插入事件,收到。

代码2- 1 在选择单元格填入账龄区间

001|Private Sub Worksheet_SelectionChange(By Val Target As Range)

002| Dim ZIDay As Long,Yf_Arr,Qj_Arr

003| If Target.Column=5 And Target.Row>1 Then

004| If Target.Count >1 Then Exit Sub

005| If WorksheetFunction.CountA(Target.Offset(0,-4).Resize(1,4))<4 Then Exit Sub

006|

ZIDay =DateDiff("m",Target.Offset(0,-2),Date)

0071

Yf_Arr=Array(0,3,6,12,24)

008| Qj_Arr=Array("3 个月以内","3-6个月”,”6个月-1年","1-2年","2年以上")

009| Target=WorksheetFunction.Lookup(ZIDay,Yf_Arr,Qj_Ar)

010| MsgBox Target.Offset(0,-3)&"单位的结余款为"&vbCr&Format(Target.Offset(0,-2),

"#,##0.00")&"账龄区间为"&vbCr&Target

011| End If

012|End Sub

代码2-1为通过Worksheet.SelectionChange 事件的单击账龄列的单元格后填入相应的账龄 区间信息,现在来分析主要语句的作用。

(1)If Target.Column=5 And Target.Row >1用于判断选中的单元区域 (Target参数)的 列号是否为第5列且行号>1,若返回 False 则不响应该事件。接下来的语句都在满足了当前

判断语句的前提下执行。

(2)If Target.Count >1语句用于判断用户选中的单元格或区域,如果是选中非一个单元 格时退出当前事件过程; If WorksheetFunction.CountA(Target.Offset(0,-4).Resize(1,4))<4 语句 则是判断以选中单元格向左偏移4列后的4个单元格内是否都存在数据,如果小于4也不响应 当前事件过程。

(3)ZIDay 变量为存储记账日期与当天日期间的月数,计算账龄月数是通过DateDiff 函 数来计算两个日期间的指定差。与 Excel的隐藏函数DATEDIF 相似,但是 VBA 函数的功能 比起更强大,其语法及参数详见表2-3。

(4)Yf_Arr 和 Qj_Arr两个变量分别存放月数的分阶和对应的分阶信息,通过Array 函数 将需要的信息写入赋值。

(5)Target =WorksheetFunction.Lookup(ZIDay,Yf_Arr,Qj_Arr)语句为通过工作表函数 Lookup引用获取对应分阶 Qj_Arr 信息内容并写入Target 所在的单元格,最后通过Msgbox 函

数提示 Target 单元格的所在单位代码、余款及账龄的提示,如图2-5所示。

无言:在实际使用时,可以使用With语句缩减重复对象Target的引用。

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

上一篇:《Python学习笔记 从入门到实战》_更了解Python的途径之一_11.1.3 实现字符串匹配处理
下一篇:《Python学习笔记 从入门到实战》_更了解Python的途径之一_8.2.3 创建并使用包
相关文章

 发表评论

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

×