数组范围

Joe*_*ano 2 excel vba excel-vba

我最近得到了加快我公司的一个大型(ish)宏的速度的承诺.到目前为止,我做了相当不错的工作,因为最后一位作家或多或少地使用了记录功能(使一些代码无关紧要),这导致了我这些格式化条件:

With Range("AH10:AP10").Interior
    .Pattern = xlSolid
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = -0.249977111117893
End With
With Range("AH17:AP17").Interior
    .Pattern = xlSolid
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = -0.249977111117893
End With
With Range("AH24:AP24").Interior
    .Pattern = xlSolid
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = -0.249977111117893
End With
With Range("AH34:AP34").Interior
    .Pattern = xlSolid
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = -0.249977111117893
End With
With Range("AH42:AP42").Interior
    .Pattern = xlSolid
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = -0.249977111117893
End With
Run Code Online (Sandbox Code Playgroud)

那么我的问题就是,为什么这不起作用呢?

Dim RangeArr(5) As Variant
RangeArr(0) = Range("AH10:AP10")
RangeArr(1) = Range("AH17:AP17")
RangeArr(2) = Range("AH24:AP24")
RangeArr(3) = Range("AH34:AP34")
RangeArr(4) = Range("AH42:AP42")

For i = 0 To 4
With RangeArr(i).Interior
    .Pattern = xlSolid
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = -0.249977111117893
End With
Next
Run Code Online (Sandbox Code Playgroud)

我得到一个运行时错误424,循环所需的对象,但使用msgbox打印,数组的值是这样的.我假设它的数组写得不正确,我只是无法找到解决方法.任何建议表示赞赏.谢谢!

Gar*_*ent 5

你已经开了个好头!您需要一系列范围:

Sub human()
    Dim RangeArr(0 To 4) As Range
    Set RangeArr(0) = Range("AH10:AP10")
    Set RangeArr(1) = Range("AH17:AP17")
    Set RangeArr(2) = Range("AH24:AP24")
    Set RangeArr(3) = Range("AH34:AP34")
    Set RangeArr(4) = Range("AH42:AP42")

    For I = 0 To 4
    With RangeArr(I).Interior
        .Pattern = xlSolid
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.249977111117893
    End With
    Next

End Sub
Run Code Online (Sandbox Code Playgroud)

  • Ranges数组需要类似于单个范围的语法. (2认同)
  • +1,作为替代,而不是循环遍历范围数组,您可以在单个范围组上执行操作:`使用范围("AH10:AP10,AH17:AP17,AH24:AP24,AH34:AP34,AH42) :AP42" )Interior` (2认同)