2017-02-07 3 views
1

В столбце A у меня есть целевое производство, в столбце B у меня есть фактическое производство, а в столбце C у меня есть дельта между ними. Я просто хочу прокрутить каждую строку в столбце C и пометить каждое значение в соответствии со стратегическим ведром. Пример кода, который я пробовал, прежде чем идти в главный документ, приведен ниже.Если инструкция elseif Excel VBA

Моя проблема заключается в том, как выполнять действие над текущей ячейкой в ​​цикле. Код просто окрашивает последнюю ячейку, на которую я нажал, вместо оцениваемой ячейки. Какие-либо предложения?

Sub StratBuckets() 

Dim Delta As Variant 
Dim n As Integer 

n = 0   
For n = 0 To 15 
    ' works up to this point --> points to the right value 
    Delta = Worksheets("Test").Range("A1:Z1000").Find("Start Date").Offset(n, 3).Value 

    If Delta > 0 And Delta <= 10 Then 
     ActiveCell.Interior.Color = vbYellow   
    ElseIf Delta > 10 Then 
     ActiveCell.Interior.Color = vbGreen   
    ElseIf Delta < 0 Then 
     ActiveCell.Interior.Color = vbRed     
    Else   
    End If    
Next n 

End Sub 

ответ

3

Необходимо нанести .Interior.Color на правую камеру.

Если Worksheets("Test").Range("A1:Z1000").Find("Start Date").Offset(n, 3) является сотой вы хотите раскрасить, то сделать:

Worksheets("Test").Range("A1:Z1000").Find("Start Date").Offset(n, 3).Interior.Color = ... 
+0

спасибо, это работает, как я хотел. –

1

Другой путь, чтобы установить диапазон DeltaRng в Find с:

Worksheets("Test").Range("A1:Z1000").Find("Start Date"),

то, если Find будет успешным, получите Delta значение 3 столбца справа с Delta = DeltaRng.Offset(n, 3).Value.

Наконец, когда вы находитесь внутри своего If Delta > 0 And Delta <= 10 Then и т. Д., Вы можете изменить .Interior.Color соты DeltaRng.Offset(n, 3).Interior.Color = vbYellow.

Код

Sub StratBuckets() 

Dim DeltaRng As Range 
Dim Delta As Variant 
Dim n As Long 

For n = 0 To 15 
    ' works up to this point --> points to the right value 
    Set DeltaRng = Worksheets("Test").Range("A1:Z1000").Find("Start Date") '.Offset(n, 3).Value 

    If Not DeltaRng Is Nothing Then '<--make sure Find was successful 
     Delta = DeltaRng.Offset(n, 3).Value '<-- find the Delta value 3 columns to the right 

     If Delta > 0 And Delta <= 10 Then 
      DeltaRng.Offset(n, 3).Interior.Color = vbYellow 
     ElseIf Delta > 10 Then 
      DeltaRng.Offset(n, 3).Interior.Color = vbGreen 
     ElseIf Delta < 0 Then 
      DeltaRng.Offset(n, 3).Interior.Color = vbRed 
     End If 
    End If 

Next n 

End Sub 
+0

Это полезно знать, спасибо! –

Смежные вопросы