打开设置单元格格式对话框-英雄云拓展知识分享
67
2023-11-07
【摘要】 本书摘自《Excel VBA跟卢子一起学早做完,不加班(实战进阶版)》一书中第1章,第2节,陈锡卢、李应钦著。
1.2 修改或增加批注内容: Comment.Text方法
无言:容我喝口单枞茶,口都渴了,你的问题还真是连环炮啊。
皮蛋:必需的啊,要学习就要狠狠地榨你。
无言:好吧,既然你想狠狠地榨我,那我也狠狠地用刚才的表格,偷懒下。若要修改或增 加原批注内容就需要用到Comment.Text, 该方法不仅可以覆盖也可以插入新增文本内容。
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~