首页 > 解决方案 > 我可以循环一系列非连续单元格,即 F35、F46、F54、F62....等

问题描述

我正在尝试循环多个形状以根据另一个工作表的相应单元格中是否存在 >0 的值来更改颜色。循环中的每个下一个形状都是一个连续的数字,但相应的单元格不是,即形状 3 对应于 F34,形状 4 对应于 F46 等。问题是非连续单元格。

这是我目前拥有的代码

Sub Shape_Color_Change()

Dim x As Integer

Dim y As Integer

y = Array(35 Or 46 Or 54 Or 62)

For x = 3 To 6

   If Worksheets("Cell").Cells(y, 35) > 0 Then

      Worksheets("Shape").Shapes(x).Fill.ForeColor.RGB = RGB(0, 51, 204)

   Else

      Worksheets("Shape").Shapes(x).Fill.ForeColor.RGB = RGB(102, 102, 102)

   End If

Next x

End Sub

它目前给了我运行时错误 13,但我也有错误 1004 尝试不同的方法。不过,这似乎是最接近我的。

标签: excelvbafor-loop

解决方案


使用适当的数组并循环遍历它。您的数组应包含相关单元格,因此请调整以适应。

Sub Shape_Color_Change()

Dim x As Long

Dim y As Variant

y = Array("F34", "F46", "F54", "F62") 'zero-based

For x = 3 To 6
    If Worksheets("Cell").Range(y(x - 3)) > 0 Then
        Worksheets("Shape").Shapes(x).Fill.ForeColor.RGB = RGB(0, 51, 204)
    Else
        Worksheets("Shape").Shapes(x).Fill.ForeColor.RGB = RGB(102, 102, 102)
    End If
Next x

End Sub

推荐阅读