Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 是否可以循环一系列非连续单元格,即F35、F46、F54、F62…等_Excel_Vba_For Loop - Fatal编程技术网

Excel 是否可以循环一系列非连续单元格,即F35、F46、F54、F62…等

Excel 是否可以循环一系列非连续单元格,即F35、F46、F54、F62…等,excel,vba,for-loop,Excel,Vba,For Loop,我正在尝试循环许多形状以根据另一工作表中对应单元格中是否存在大于0的值来更改颜色。循环中的每个下一个形状是一个连续的数字,但相应的单元格不是,即形状3对应于F34,形状4对应于F46 ect。问题在于非连续单元 这是我目前掌握的密码 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

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

这是我目前掌握的密码

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。不过,这一个似乎与我最接近。

使用适当的数组并循环通过它。您的数组应该包含相关的单元格,以便根据需要进行调整

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

处理数组索引的好方法。干杯,大帮助!昨天才发现循环,所以我还在学习!我的荣幸。谢谢@Gary'sStudent.@C.Lawn建议:定义
Const rgbBrightBlue=&HCC3300
Const rgbDarkGrey=&H666666
,并用这些常量替换内联的
RGB
函数调用。