ET疑难千寻千解丛书之EXCEL2010编程与实践 罗刚君 章兰新 黄朝阳 编著
疑难16
如何优化过程“批量修改批注背景色” 工作表中A列为姓名,B列为成绩,在A列中部分单元格有批注。将所有批注的背景色修改为红色,其代码如下。那么如何才能优化代码而提升速度呢?
- Sub 批量修改批注框背景色()
- Dim rng As Range
- On Error Resume Next '防错
- For Each rng In Range([a1], Cells(Rows.Count, 1).End(xlUp)) '遍历A列所有非空单元格
- Debug.Print rng.Comment.Text '导出批注文字
- If Err = 0 Then '如果没有错误(表示有批注)
- rng.Comment.Visible = True '让批注可见
- rng.Comment.Shape.Fill.ForeColor.SchemeColor = 10 '指定批注背景色
- rng.Comment.Visible = False '恢复隐藏属性
- End If
- Err.Clear '清除错误
- Next
- End Sub
复制代码è解决方案 将循环对象单元格修改为批注对象,其循环次数可以大大降低,从而提速。 í操作方法 步骤1
修改代码循环的对象,完整代码如下:
- Sub 批量修改批注框背景色2() '通过改变循环对象提速,即循环的次数减少
- Dim Com As Comment
- For Each Com In ActiveSheet.Comments '遍历所有批注
- If Not Intersect(Com.Parent, [a:a]) Is Nothing Then
- Com.Visible = True '让批注可见
- Com.Shape.Fill.ForeColor.SchemeColor = 10 '指定批注背景色
- Com.Visible = False '恢复隐藏属性
- End If
- Next
- End Sub
复制代码 步骤2
分别执行两段代码,优化后的代码明显速度更快,因为循环的次数已大大减少。
============================= 以上摘自《EXCEL2010编程与实践》 |