Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4828|回复: 7

[VBA] 016-优化“批量修改批注背景色”-疑难千寻千解丛书(VBA)

[复制链接]
发表于 2011-1-26 14:09 | 显示全部楼层 |阅读模式
ET疑难千寻千解丛书之EXCEL2010编程与实践
罗刚君 章兰新 黄朝阳 编著

疑难16
如何优化过程“批量修改批注背景色”
工作表中A列为姓名,B列为成绩,在A列中部分单元格有批注。将所有批注的背景色修改为红色,其代码如下。那么如何才能优化代码而提升速度呢?

  1. Sub 批量修改批注框背景色()
  2.     Dim rng As Range
  3.     On Error Resume Next '防错
  4.     For Each rng In Range([a1], Cells(Rows.Count, 1).End(xlUp))  '遍历A列所有非空单元格
  5.         Debug.Print rng.Comment.Text  '导出批注文字
  6.         If Err = 0 Then  '如果没有错误(表示有批注)
  7.             rng.Comment.Visible = True  '让批注可见
  8.             rng.Comment.Shape.Fill.ForeColor.SchemeColor = 10 '指定批注背景色
  9.             rng.Comment.Visible = False '恢复隐藏属性
  10.         End If
  11.         Err.Clear  '清除错误
  12.     Next
  13. End Sub
复制代码
è解决方案
将循环对象单元格修改为批注对象,其循环次数可以大大降低,从而提速。
í操作方法
步骤1
修改代码循环的对象,完整代码如下:

  1. Sub 批量修改批注框背景色2()  '通过改变循环对象提速,即循环的次数减少
  2.     Dim Com As Comment  
  3.     For Each Com In ActiveSheet.Comments    '遍历所有批注
  4.         If Not Intersect(Com.Parent, [a:a]) Is Nothing Then
  5.             Com.Visible = True  '让批注可见
  6.             Com.Shape.Fill.ForeColor.SchemeColor = 10  '指定批注背景色
  7.             Com.Visible = False    '恢复隐藏属性
  8.         End If
  9.     Next
  10. End Sub
复制代码
步骤2
分别执行两段代码,优化后的代码明显速度更快,因为循环的次数已大大减少。

=============================
上摘自《EXCEL2010编程与实践》
 楼主| 发表于 2011-1-26 14:10 | 显示全部楼层
妖言:

一个是历遍非空单元格,一个是历遍批注,效率当然完全不同了。
不过对妖来说,对批注永远是有心理障碍滴
{:231:}
回复

使用道具 举报

发表于 2011-1-26 14:24 | 显示全部楼层
该妖是好妖,该脑袋是函数脑袋!
回复

使用道具 举报

发表于 2011-1-26 15:34 | 显示全部楼层
试试这样行不行,速度没测试过:


  1. Sub 批量修改批注框背景色3()
  2.     Dim MRG As Range
  3.     Dim rng As Range
  4.     Application.DisplayCommentIndicator = xlCommentAndIndicator    '显示批注
  5.     Set MRG = Cells.SpecialCells(xlCellTypeComments) '定位批注
  6.     For Each rng In MRG
  7.         rng.Comment.Shape.Fill.ForeColor.SchemeColor = 3    '指定批注背景色
  8.     Next
  9.     Set MRG = Nothing
  10.     Application.DisplayCommentIndicator = xlCommentIndicatorOnly    '隐藏批注
  11. End Sub
复制代码

回复

使用道具 举报

发表于 2011-1-26 15:42 | 显示全部楼层
向高手学习
回复

使用道具 举报

发表于 2011-4-9 21:26 | 显示全部楼层
{:011:}{:011:}{:011:}{:011:}
回复

使用道具 举报

发表于 2011-8-29 12:28 | 显示全部楼层
真不错啊!!!!
回复

使用道具 举报

发表于 2011-8-29 06:57 | 显示全部楼层
辛苦了,多谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-1 20:25 , Processed in 0.239645 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表