Excel VBA遍历单元格仅修改指定范围时行变量识别错误的修复求助
Excel VBA 宏修复方案
核心问题是你代码中的变量z、y被写在了双引号内部,VBA会将双引号包裹的内容直接识别为静态字符串,不会解析其中的变量,自然就把z当成了列名的一部分。只需要把列标识符和变量拆开,用&符号拼接即可。
另外你原有代码还有一个隐藏问题:选中多单元格范围后仅给ActiveCell赋值,只会让左上角单元格被填入内容,要让整个选中范围都生效,将ActiveCell.FormulaR1C1改为Selection.Value即可。
最小改动修改后的完整代码
Sub CleanupTest() ' ' CleanupTest Macro Dim No_Of_Rows As Integer ' 建议显式声明所有变量,避免隐式声明出错 Dim x As Integer, Z As Integer, y As Integer, i As Integer No_Of_Rows = Cells(Rows.Count, 5).End(xlUp).Row x = No_Of_Rows MsgBox No_Of_Rows Z = 9 y = 7 For i = 1 To (x / 20) Range("H" & Z & ":J" & Z).Select Selection.Value = "NA" Range("U" & Z & ":Y" & Z).Select Selection.Value = "798742" Range("AG" & Z & ":AI" & Z).Select Selection.Value = "NA" Range("AT" & Z & ":AX" & Z).Select Selection.Value = "798742" Range("S" & y & ":Y" & y).Select Range("S" & y & ":Y" & y).Cut Destination:=Range("S6:Y6") Range("AR" & y & ":AX" & y).Select Range("AR" & y & ":AX" & y).Cut Destination:=Range("AR6:AX6") Range("S" & y & ":AX" & y).Select With Selection.Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 .PatternTintAndShade = 0 End With Z = Z + 20 y = y + 20 Next i End Sub
额外优化建议
如果要提升宏的运行效率,可以去掉所有不必要的Select操作,直接对范围对象赋值、操作,不需要选中后再处理,修改后运行速度会明显提升,也不会出现屏幕闪烁的问题。
内容的提问来源于stack exchange,提问作者Kirito James
相关产品推荐
相关产品推荐

