我* m试图在有条件的条件下更改单元格颜色,情况是我的工作中有不同的帖子,他们选择将个人电脑放在托盘中
在每个站点上,我们计算小时数和每小时pcs = pcs:hours = solution
示例:评级为每小时120个或更多的电池单元为绿色 之间:每小时119pcs至80pcs单元格颜色为橙色 每小时少于80个电池单元的颜色是红色
现在对于许多帖子,我的代码都有效,但是对于某些帖子,它为我找不到我的原因提供了错误的颜色
我不知道这是怎么回事
我发布了Vman的代码,所有工作站都有这个代码,但是就像我之前告诉的那样,只是更改条件值Vman每小时是120个 其他电台可以是2250、100、350、300
以此类推,大多数测站都能给出正确的颜色结果
是Vman的代码
If ComboBox1.Text = "Vman" Then
Range("ah10").Font.Color = vbBlack
Range("ah10").Font.Bold = True
Range("ah10").Font.Color = vbBlack
'grijs-Gray
If Range("ah10").Value = "" Then
Range("ah10").Interior.Color = RGB(128, 128, 128)
Range("ah10").Font.Color = vbBlack
'rood-Red
ElseIf Range("ah10").Value < "80" Then
If Range("ah10").Value > "" Then
Range("ah10").Interior.Color = vbRed
Range("ah10").Font.Color = vbWhite
End If
'oranje-Orange
ElseIf Range("ah10").Value >= "80" Then
If Range("ah10").Value < "120" Then
Range("ah10").Interior.Color = RGB(255, 153, 0)
End If
'groen-Green
ElseIf Range("ah10").Value >= "120" Then
Range("ah10").Interior.Color = RGB(146, 208, 80)
End If
End If
If ComboBox1.Text = "Vman 3" Then
Range("ah10").Font.Color = vbBlack
Range("ah10").Font.Bold = True
Range("ah10").Font.Color = vbBlack
'grijs-Gray
If Range("ah10").Value = "" Then
Range("ah10").Interior.Color = RGB(128, 128, 128)
Range("ah10").Font.Color = vbBlack
'rood-Red
ElseIf Range("ah10").Value < "80" Then
If Range("ah10").Value > "" Then
Range("ah10").Interior.Color = vbRed
Range("ah10").Font.Color = vbWhite
End If
'oranje-Orange
ElseIf Range("ah10").Value >= "80" Then
If Range("ah10").Value < "120" Then
Range("ah10").Interior.Color = RGB(255, 153, 0)
End If
'groen-Green
ElseIf Range("ah10").Value >= "120" Then
Range("ah10").Interior.Color = RGB(146, 208, 80)
End If
End If
我找不到适用于大多数工作站的代码的解决方案,虽然颜色很好,但有些却不能。
答案 0 :(得分:0)
是否有理由两次输入代码?
同样,它不起作用的原因似乎是因为您的值位于“引号”之内。
关于我为什么使用.value2
而不是.value
的信息,请参阅此帖子:
What is the difference between .text, .value, and .value2?
我还建议使用变量来引用范围。这样,您只需更改一次即可,而无需在代码中更改10个不同的位置。
尝试一下
Dim pieces As Range
Set pieces = Range("AH10")
If ComboBox1.Text = "Vman" Or ComboBox1.Text = "Vman 3" Or ComboBox1.Text = "Vman 4" Then
pieces.Font.Color = vbBlack
pieces.Font.Bold = True
If pieces.Value2 = "" Then 'grijs-Gray
pieces.Interior.Color = RGB(128, 128, 128)
ElseIf pieces.Value2 < 80 Then 'rood-Red
pieces.Interior.Color = vbRed
pieces.Font.Color = vbWhite
ElseIf pieces.Value2 > 79 And pieces.Value2 < 120 Then 'oranje-Orange
pieces.Interior.Color = RGB(255, 153, 0)
ElseIf pieces.Value2 > 119 Then 'groen-Green
pieces.Interior.Color = RGB(146, 208, 80)
End If
End If
这样重复时,可以使用With ... End With
代替变量,也可以将其与变量结合使用。
If ComboBox1.Text = "Vman" Or ComboBox1.Text = "Vman 3" Or ComboBox1.Text = "Vman 4" Then
With Range("AH10")
.Font.Color = vbBlack
.Font.Bold = True
If .Value2 = "" Then 'grijs-Gray
.Interior.Color = RGB(128, 128, 128)
ElseIf .Value2 < 80 Then 'rood-Red
.Interior.Color = vbRed
.Font.Color = vbWhite
ElseIf .Value2 > 79 And pieces.Value2 < 120 Then 'oranje-Orange
.Interior.Color = RGB(255, 153, 0)
ElseIf .Value2 > 119 Then 'groen-Green
.Interior.Color = RGB(146, 208, 80)
End If
End With
End If