【发布时间】:2021-03-18 10:42:59
【问题描述】:
我有一行代码可以选择多个单元格区域,如下所示:
Range("B9:M9,B12:M12,B15:M15,B18:M18,B21:M21,B24:M24,B27:M27,B30:M30,B33:M33,R9:AC9,R12:AC12,R15:AC15,R18:AC18,R21:AC21,R24:AC24,R27:AC27,R30:AC30,R33:AC33,AH9:AS9,AH12:AS12,AH15:AS15,AH18:AS18,AH21:AS21,AH24:AS24,AH27:AS27,AH30:AS30,AH33:AS33,AW9:BI9,AW12:BI12,AW15:BI15").Select
但是,看起来我选择了太多单元格,因为我在问题底部的图片中看到了错误(错误 1004)。如果我删除一些选择,它会起作用。
我决定录制一个宏,看看它是如何应对的,它执行了以下代码:
Union(Range( _
"AW24:BI24,AW27:BI27,AW30:BI30,AW33:BI33,B9:M9,B12:M12,B15:M15,B18:M18,B21:M21,B24:M24,B27:M27,B30:M30,B33:M33,R9:AC9,R12:AC12,R15:AC15,R18:AC18,R21:AC21,R24:AC24,R27:AC27,R30:AC30,R33:AC33,AH9:AS9,AH12:AS12,AH15:AS15,AH18:AS18,AH21:AS21,AH24:AS24,AH27:AS27" _
), Range("AW12:BI12,AW15:BI15,AW18:BI18,AW21:BI21")).Select
但是,当我再次尝试运行代码时,我得到了相同的 1004 错误。非常感谢任何帮助
完整代码如下:
Sub updateSelectedMetric()
currentChosenMetric = Range("A4").Value
Range("B9:M9,B12:M12,B15:M15,B18:M18,B21:M21,B24:M24,B27:M27,B30:M30,B33:M33,R9:AC9,R12:AC12,R15:AC15,R18:AC18,R21:AC21,R24:AC24,R27:AC27,R30:AC30,R33:AC33,AH9:AS9,AH12:AS12,AH15:AS15,AH18:AS18,AH21:AS21,AH24:AS24,AH27:AS27,AH30:AS30,AH33:AS33").Select
'Union(Range( _
' "AW24:BI24,AW27:BI27,AW30:BI30,AW33:BI33,B9:M9,B12:M12,B15:M15,B18:M18,B21:M21,B24:M24,B27:M27,B30:M30,B33:M33,R9:AC9,R12:AC12,R15:AC15,R18:AC18,R21:AC21,R24:AC24,R27:AC27,R30:AC30,R33:AC33,AH9:AS9,AH12:AS12,AH15:AS15,AH18:AS18,AH21:AS21,AH24:AS24,AH27:AS27" _
' ), Range("AW12:BI12,AW15:BI15,AW18:BI18,AW21:BI21")).Select
Select Case currentChosenMetric
Case "Waste (%)", "CiCL <1", "DSODA", "DCODA"
Selection.NumberFormat = "0.0%"
Case "UPT", "Sales (U)", "CTF (U)"
Selection.NumberFormat = "#,##0"
Case "RoS", "CTF to Sales"
Selection.NumberFormat = "##.0"
Case "Sales (£)", "Waste (£)"
Selection.NumberFormat = "£#,##0"
End Select
Range("A1").Select
结束子
【问题讨论】:
-
您只能将 255 个字符的字符串传递给 Range。把它分成更短的块。
-
设置范围的字符串不能超过255个字符。但是,你一直写这样的代码方便吗?不连续范围不能使用一段代码使用算法(待定义)来构建吗?当您手动执行此操作时,我想您有特定的逻辑来执行此操作……为什么需要选择?编辑您的问题并分享显示您最终尝试完成的代码不是更好吗?
-
附加代码显示选择是根据用户选择的指标修改格式。
-
是 @Rui 建议的命名范围是一个不错的选择。如果您想通过 VBA 执行此操作,那么我会在
Rows 9 to 33 with Step 3和B:M、R:AC、AH:AS和AW:BI范围内看到一个模式。使用 Union 的简单循环可以解决您的问题;) 上述模式中唯一的异常值是AW:BI.. 我觉得应该是AX:BI