ad

《Excel VBA跟卢子一起学早做完,不加班(实战进阶版)》_2.5.2 OateDiff 函数和C 转换函数

网友投稿 64 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#) '日期类型转换位文本类型

《Excel VBA跟卢子一起学早做完,不加班(实战进阶版)》_2.5.2 OateDiff 函数和C 转换函数

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 代表的是执行代码的这个工作簿。

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

上一篇:《Excel VBA+SQL数据管理与应用模板开发》_工作效率UP!_5.2 工作表快速合并
下一篇:跟着一起学《Excel VBA跟卢子一起学 早做完 不加班 基础入门版》_1.3 如何宏过程
相关文章

 发表评论

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

×