ET疑难千寻千解丛书之EXCEL2010编程与实践 罗刚君 章兰新 黄朝阳 编著
疑难12
如何优化过程“B列所有图片右移”
如图所示的B列图片需要全部向右移动两个单位,VBA代码如下。如何对它进行优化使程序效率更高呢?
- Sub B列图右移2个单位()
- Dim Sh As Shape, i As Integer
- i = 2 '指定变量基数2,表示图片从第二行开始
- For Each Sh In Sheets(1).Shapes '循环所有图片
- '如果图片左上角地址等于i行2列的单元格地址
- If Sh.TopLeftCell.Address = Cells(i, 2).Address Then
- i = i + 1 '累加变量
- Sh.Select '选择处于B列的图片
- Selection.Left = Selection.Left + 2 '将选择的对象右移2个单位
- End If
- Next Sh
- End Sub
复制代码
è解决方案 删除代码中的Select语句,直接移动对象。
í操作方法
步骤1
修改选择对象的语句,直接移动对象,代码如下:
- Sub B列图片右移2个单位2() '不选择对象而移动
- Dim Sh As Shape, i As Integer
- i = 2
- For Each Sh In Sheets(1).Shapes
- If Sh.TopLeftCell.Address = Cells(i, 2).Address Then
- i = i + 1
- Sh.Left = Selection.Left + 2 '将符合条件的对象Sh右移两个单位
- End If
- Next Sh
- End Sub
复制代码 步骤2
分别执行两段代码,它们可以实现相同功能,但在执行效率上大大不同,图片越多,差异越大。
============================= 以上摘自《EXCEL2010编程与实践》 |