ad

《Excel VBA跟卢子一起学早做完,不加班(实战进阶版)》_提升工作效率_1.2 修改或增加批注

网友投稿 67 2023-11-07

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

1.2 修改或增加批注内容: Comment.Text方法

无言:容我喝口单枞茶,口都渴了,你的问题还真是连环炮啊。

皮蛋:必需的啊,要学习就要狠狠地榨你。

无言:好吧,既然你想狠狠地榨我,那我也狠狠地用刚才的表格,偷懒下。若要修改或增 加原批注内容就需要用到Comment.Text, 该方法不仅可以覆盖也可以插入新增文本内容。

《Excel VBA跟卢子一起学早做完,不加班(实战进阶版)》_提升工作效率_1.2 修改或增加批注

Comment.Text 方法共有3个参数,其中:

(1)Text 参数为要设置或插入的文本内容,必需参数。

(2)Start参数则是所添加文本的起始位置(字符数)。如果省略此参数,则删除批注中 的所有现有文字,可选参数。

(3)Overwrit e 参数则是用于设置覆盖原批注或者插入新文本内容:如果为 True, 则覆盖 现有文件;默认值是 False (插入文本);可选参数,具体示例如代码1-7所示

代码1-7 覆盖原批注内容

001|Sub Rng_CommText_Overwrite_010

002| Dim Comm_Rng As Range,Rng As Range

003| With Range("A1").CurrentRegion

004| Set Comm_Rng=.SpecialCells(xlCellTypeComments)

005| For Each Rng In Comm_Rng

006| Rng.Comment.Text vbCrLf&Date

0071 Next Rng

008 End With

009|End Sub

代码1-7示例过程为在定位批注到的单元格集合中循环替换原批注,而Rng.Comment.Text vbCrLf&Date 语句将原批注文本内容替换为换行符和当前日期,具体示例如代码1-8所示。

代 码 1 - 8 批注最末插入新内容

001|Sub Rng_CommText_Overwrite_020

002| Dim Comm_Rng As Range,Rng As Range

003| With Range("A1").CurrentRegion

004| Set Comm_Rng=.SpecialCells(xICellTypeComments)

0051 For Each Rng In Comm_Rng

006| Rng.Comment.Text vbCrLf &Date,Len(Rng.Comment.Text)+1

0071 Next Rng

008| End With

009|End Sub

代码1-8示例过程使用了Comment.Text 的Text和 Start 参数,分别指定要插入的新内容以 及要插入新内容的位置。

Rng.Comment.Text vbCrLf &Date,Len(Rng.Comment.Text)+1语 句 中 Len(Rng.Comment.Text) +1语句为统计原批注中的字符个数并+1,其作用是在原批注的末尾插入新增内容。

皮蛋;不+1, 会怎么样呢?

无言:不+1,会将原批注最末尾的字符移到新插入内容的最后。

皮 蛋 : 原 来 是 这 样 啊 ! 那 要 指 定 某 个 位 置 的 呢?

在指定位置插入内容,如代码1-9所示。

代 码 1 - 9 关键字后插入内容

001|Sub Rng_CommText_Overwrite_030

002| Dim Comm_Rng As Range,Rng As Range,Zif As String,Zif_WzAs Long

0031 Zif=":"

004| With Range("Al").CurrentRegion

005| Set Comm_Rng=.SpecialCells(xICellTypeComments)

006| For Each Rng In Comm_Rng

007| Zif_Wz=VBA.InStr(Rng.Comment.Text,Zif)

008| fZif_Wz>0 Then Rng.Comment.Text vbCrLf&Date,Zif_Wz+1,Fasle

009| Next Rng

010 End With

011|End Sub

无言:蛋蛋,代码1-9示例过程就是在指定的位置之后插入新内容。

(1)代码1-9先通过定位批注位置,并将指定查找的关键字赋值给 Zif 变量,接着在Rng 循环中通过VBA.InStr(Rng.Comment.Text,Zif)语句获得Zif关键字的开始位置并将 其定位值赋值给 Zif_Wz 变量。

(2)接着通过If Zif_Wz>0语句判断,若批注中存在关键字,则执行R ng.Comment.Text vbCrLf&Date,Zif_Wz+1,Fasle 语句,在关键字的位置后+1插入新增内容,并将 Overwrite 参数设置为 False, 保留原内容。

无言:这里要注意的问题是,如果搜索的关键字多于一个字符的时候,则必需在查找的数 字位置上加上关键字的字符个数,而后无需再+1。即,如果是2个字符以上可以省略+1。

皮蛋:原来这样啊,那VBA.InStr干什么用的。

无言: InStr 函数可以参考Excel函数的SEARCH, 它们挺相近的,先参考该函数后再回看 InStr函数的语法。

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

上一篇:《深入理解 Java 虚拟机 JVM 高级特性与最佳实践(第3版)》_求知之路漫漫_2.2.5 方法区
下一篇:跟着一起学《Excel VBA跟卢子一起学 早做完 不加班 基础入门版》_3.4.2 With 语句的嵌套
相关文章

 发表评论

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

×