条件单元格填充代码,适用于每行具有不同条件的多个行

时间:2015-06-03 17:56:07

标签: excel logic vba

我正在尝试使用VBA编写条件单元格填充代码但是有一些语法问题。我知道有一个选项卡,但是我需要将代码应用于每行具有不同条件的几个不同的行,因此代码对于我的目的来说会更快。我对VBA很新,但我认为至少我的逻辑是正确的。

基本上有一个引导列,其值必须针对以下列中的每个值进行测试。

(TEST VALUE) | (VALUE TO BE TESTED)| (VALUE TO BE TESTED)...

(TEST VALUE) | (VALUE TO BE TESTED)| (VALUE TO BE TESTED)...

如果该值大于或小于测试值3个单位,则单元格需要变为红色,否则需要为绿色。

这就是我所做的。我使用了一个按钮宏,但如果有一种方法可以自动执行此操作而没有最好的按钮。

我一直得到运行时错误“1004”;第五行的应用程序或对象定义错误。所以基本上我使用嵌套的for循环。第一个循环选择行并选择该行的测试值。也许我正在分配变量错误或者我需要选择我正在使用的工作表?循环的下一部分测试每行中的以下值,以查看它们是否在测试值的指定范围之内或之外。最后,根据这一决定,细胞着色。

CODE:

Private Sub CommandButton21_Click()
Dim i As Integer, j As Integer, T As Integer, R As Integer
'T is the cell we want to test, R is the Integer we want to use to test T
For i = 6 To 132
R = Cells(6, j).Value
For j = 4 To 1000 'loop through each column to test each cell (move to the right down selected row)
  T = Cells(i, j).Value 'test each cell
  If T < (R - 3) Or T > (R + 3) Then
    Cells(i, j).Interior.ColorIndex = 4
Else
    Cells(i, j).Interior.ColorInex = 3
End If
Next j
Next i
End Sub

我也尝试使用单元格公式编辑器来应用此代码,但我不相信你可以这样改变单元格颜色:

"=IF(OR(D6<$C$6-3,D6>$C$6+3),"CHANGE COLOR TO RED","CHANGE COLOR TO GREEN""

2 个答案:

答案 0 :(得分:0)

将以下行向下移动一行(在为J指定值之前):

R = Cells(6, j).Value

答案 1 :(得分:0)

这不需要使用vba。只需使用条件格式。在选项卡上,假设您使用excel 2007或更高版本,请转到主页选项卡并选择条件格式。从选项中选择一些内容,或者您​​可以选择新规则。从弹出窗口中选择&#34;使用公式确定要格式化的单元格&#34;。输入类似&#34; = if($ a $ 3&lt; = a4 + 3,TRUE,False)&#34;然后选择你想要的格式。