我创建一个子程序,如下所示,引用一个单元格,然后选择形状。
在我的代码中,H值(名称)不起作用。请帮忙。
Sub Erectioncolour()
J = 9
H = 1
Do
If Worksheets("Vertical Chart").Cells(J, 25).Value <> "" Then
Worksheets("Visual Chart").Shapes(H).Fill.ForeColor.RGB = RGB(5, 0, 0)
Else
Worksheets("Visual Chart").Shapes(H).Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
J = J + 1 And H = H + 1
Loop While J = 268
End Sub
答案 0 :(得分:0)
在我的代码中,H值(名称)不起作用。
是的,它确实在起作用。
您的问题在于条件If Worksheets("Vertical Chart").Cells(J, 25) <> ""
。在K列之后,该工作表中的第25行为空。因此,对于大于10的J
的每个值,它将不会应用RGB(5, 0, 0)
,而是将RGB(255, 255, 255)
应用为False部分测试。
因此True
语句的If/Else
部分只执行一次。之后,它们都评估为False
,因此形状正确(根据代码)应用了Else
语句中的以下内容:
Worksheets("Visual Chart").Shapes(H).Fill.ForeColor.RGB = RGB(255, 255, 255)
解决方案:
您需要在If
语句中更改逻辑,或者指定非白色RGB值。
更新以解释IF语句的工作原理......
这是If
语句的两个部分,True
部分使用RGB(5, 0, 0)
和False
部分为形状着色,并使用{{1}为形状着色(白色)。当您的文件当前已配置时,该语句将为{9,11,12,...,268}中的RGB(255, 255, 255)
的每个值评估False
。这是基于工作表中的逻辑和数据(或缺少数据)的条件。
如果您不希望这些形状为白色,则需要指定不同的RGB值。您选择哪一个取决于您,例如J
看起来很绿松石。
或另一种可能性是您的.RGB(6, 255, 255)
语句的测试不正确。如果这不正确,那么在你描述测试 应该如何工作之前我无法帮助你,因为当前的测试将始终做它现在正在做的事情,直到第25行中的单元格不是-blank。