excel出现中文乱码的解决教程-英雄云拓展知识分享
130
2023-11-07
【摘要】 本书摘自《Excel VBA跟卢子一起学早做完,不加班(实战进阶版)》一书中第2章,第5节,陈锡卢、李应钦著。
2.5.2 OateDiff 函数和C 转换函数
若要指定日期可以使用DateSerial 函数。该函数的语法与Excel 函数中的 Date 函数的一样, 可以使用【#2017-12-10#】这样的格式来写明日期;也可以通过Cdate类型转换函数将文本日 期转换为日期类型。转换函数有很多,详见表2-3。DateDiff函数的 interval参数使用时需要用英文双引号标识才能有效,表2-4所示是该参数 的对应计算类型标识说明。
无言:根据DateDiff函数的interval参数计算类型,可以获取需要计算的两个日期时间间的 差额。还有刚才提及的类型转换函数(如表2-5所示),它们的主要作用是将某些已定义的数 据类型转换为其他需要的数据类型。
Cstr(#2017-5-109:30:55 Am#) '日期类型转换位文本类型
Cstr("2017-5-109:30:55Am")'文本日期类型转换为日期类型
皮蛋:这就是转换函数的作用吗?还有其他用途吗?
无言:有的,这是常用情况,还有一种用途。
当声明的数据类型与实际类型不相符时,会造成运算错误。此时可以通过转换函数进行 更正。
上面的示例看起来没有问题,但是两个整数相乘后的结果远远超出了Integer类型 (-32768~32767)的有效范围,运行后会出现提示溢出错误。
皮蛋:那转换函数的作用体现在哪里呢?
无言:可以在Msgbox 函数中使用C 转换函数,将原来的整型类型改为长整型 (Long), 如
下所示,这样就不会出现溢出错误了。
MsgBox CLng(Aa)*CLng(Ab)'将两参数的类型转话为Long 类型,使得计算结果不会溢出
皮蛋:原来还可以这样使用啊。
无言:是的,不过对于变量的计算结果是无法转化的——当将计算结果赋值给一个变量 后,是无法改变该变量的数据类型来防止错误的。接下来继续运用Worksheet.SelectionChange 事件来引用绩效考核金的填入。
2.5.3 绩效考核数据填写
现在有一份回款率绩效奖金表需要根据图2-6所示的不同区间填入对应的绩效档位和增幅 的奖金,现在需要由单击A 列中有数据的单元格后填入催回率绩效奖励表的C 列对应单元格(见 图2-7),过程如代码2-2所示。
代码2-2绩效考核金
001|Private Sub Worksheet_SelectionChange(ByVal Target As Range)
002| With Target
003| If.Count>1 Then Exit Sub
004| If.Column=1And.Row>2 And.Value~""And.Value >=0.7 Then
005| .Offset(0,1)=WorksheetFunction.VLookup(.Value,Me.Range("I1").CurrentRegion,3,True)
006| ,Offset(0,2)=WorksheetFunction.VLookup(.Value,Me.Range("I1").CurentRegion,4,True)
007| End If
008| End With
009|End Sub
(1)代码2-2示例过程中,采用重复对象精简引用后,使得代码简洁了很多。过程中首 先通过If.Count>1 语句判断选择的单元格是否多于一个,若是则退出事件。
(2)否则继续执行If.Column=1And.Row>2And.Value~""And.Value >=0.7 语句, 该语句的作用是判断选中单元格是否在第1列第2行,并且单元格内容不为空或者大于等于0 . 7 时才执行 If…End If 语句内的语句。
(3)当第2个判断语句满足要求和通过WorksheetFunction.VLookup 引用函数具体对应的 绩效档位和增幅,其中 Me.Range("I1").CurrentRegion 为引用当前工作表本身I1 单 元 格 开 始 的 连续区域作为 VLookup 工作表函数的第2参数的区域对象,然后通过偏移位置将对应数据写 入对应的单元格。
皮蛋: Me.Range("I1").CurrentRegion 语句中的Me 是什么意思呢,有什么用?
无言: Me 在编程中代表代码所在对象的本身。
在代码正在执行的地方提供引用具体实例的方法,即 Me 在这里代表了这段代码所书写在 的对象的对象载体。就像有人问你在干嘛,你回答我在吃饭,吃饭代表执行的语句,而这些语 句执行的对象就是我自己这个人。
Me 属于隐含声明的变量,在不同对象中,Me 代表着不同对象本身。
在 Worksheet(1)执行代码中Me 代表了Worksheet(1)自己,如果在 Worksheet(2)中则代表 Worksheet(2)工作表;如果在工作簿对象中执行代码, Me 代表的是执行代码的这个工作簿。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~