如何移除VBA宏代码中的Select语句并高效设置单元格格式
移除VBA宏中的Select语句优化方案
录制的宏默认会生成Select、Selection这类依赖选中对象的代码,不仅运行效率低,还容易因为选中对象变化出问题。直接操作单元格/列对象就能彻底移除这些冗余语句,优化后的代码如下:
优化后的完整代码
Sub ExSD_InsertColumns() ' ExSD_InsertColumns Macro With Sheets("ExSDReport") ' 批量插入列 .Columns("B:C").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove .Columns("E:E").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove .Columns("G:H").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove ' 设置表头文本 .Range("B1").Value = "ARC" .Range("C1").Value = "Unit Type" .Range("E1").Value = "Work Pool ABBR" .Range("G1").Value = "Date" .Range("H1").Value = "Time" End With End Sub Sub ExSD_Date_Time_FormatSet() ' ExSD_Date_Time_FormatSet Macro With Sheets("ExSDReport") ' 设置日期列格式 .Range("G2:G250").NumberFormat = "m/d/yyyy" ' 设置时间列格式 .Range("H2:H250").NumberFormat = "h:mm;@" End With End Sub
核心优化说明
- 用
With语句绑定目标工作表,避免重复写Sheets("ExSDReport"),同时确保所有操作都针对指定工作表,不会误操作其他表 - 直接对
Columns、Range对象调用方法/赋值,彻底删掉Select、Selection、ActiveCell这些多余步骤,代码运行更快,逻辑更直观 - 把
FormulaR1C1换成Value,因为这里只是设置静态文本,不需要公式,语义更清晰
内容的提问来源于stack exchange,提问作者Iron Man
相关产品推荐
相关产品推荐

