VBA Worksheet 事件之 Change 应用

标签:
vbaworksheet'change事件len函数ltrim函数str函数it |
分类: VBA |
背景:单元格内容改变,会引起相关的内容做对应的改变,如当在 A2 中输入一个数字,需要将其组成的数字拆分出来,将其放入对应位的单元格内,并在最高位前的单元格中加入一个 “$” 符号,形如:
http://s7/mw690/7f14264agdda002e07986&690Worksheet
使用快捷键 Alt F11 进入 VBE 窗口,双击 VBAProject(工作簿名)下的数据放入的 Sheet
名,输入如下代码即可实现:
|
这里有几点细节需要说明:
- 使用 Len 函数计算数值长度时,对于数字,则计算其类型的长度,如
http://s6/mw690/7f14264agdda0380fb9d5&690Worksheet
事件之 Change 应用" TITLE="VBA Worksheet 事件之 Change 应用" />
- 使用 Str 函数转换 数字类型到字符类型时,会在其前面产生一个空字符(符号占位符)
http://s4/mw690/7f14264agdda053278713&690Worksheet
事件之 Change 应用" TITLE="VBA Worksheet 事件之 Change 应用" />
可以看出,Len 得出的结果是 9 而不是 8.所以在程序处理中使用了Ltrim 函数去除左边的空格。
-
在程序中使用 Offset 处理分离后的数字的存储单元格位置问题,这里就会引起一个无限循环激发 Change 事件的问题,为此,需要用到事件的一个属性 Application.EnableEvents ,在存储分解后的数字之前,暂时的将 Change 事件关闭,即设置 Application.EnableEvents = False,在数字存储完成之后,重新开启 Change 事件。