2015-06-04 287 views
1

我需要突出顯示每行中超過列AU中數值的單元格;那麼爲下一行做這個工作,但是我無法獲得列AU的值是迭代的,意味着改變到下一行的值。VBA迭代循環

讓我知道我在做什麼錯在這裏。

Sub highlight() 
    Application.ScreenUpdating = False 

    Dim myRange As Range 
    Dim i As Long, j As Long 

    Set myRange = Range("F11:AP20") 
    For n = 11 To 20 
     For i = 1 To myRange.Rows.Count 
      For j = 1 To myRange.Columns.Count 
       If myRange.Cells(i, j).Value < Range(AUn).Value Then 
        myRange.Cells(i, j).Interior.Color = 65535 
       Else 
        myRange.Cells(i, j).Interior.ColorIndex = 2 
       End If 
      Next j 
     Next i 
    Next n 
End Sub 
+0

原諒我,如果這是一個noob問題,但我不使用範圍()那麼多(我總是直接在細胞上循環),但什麼是「AUn」?那只是一個包含零的未定義變量? –

+1

這是你正在嘗試? '如果myRange.Cells(i,j).Value

+0

AUn是我嘗試調用列作爲一個排序數組,允許我循環的值n變化好像我使用函數(= $ AU11,而不是= $ AU $ 11) – gduhoffmann

回答

1
  1. 你有1個循環額外
  2. AUn被當作空變量。我想你想在Col AU的相關行中工作。

這是你正在嘗試? (未經測試

我評論的代碼,以便讓我知道,如果你還有任何疑問:)

Sub highlight() 
    Application.ScreenUpdating = False 

    Dim myRange As Range 
    Dim n As Long, j As Long 
    Dim ws As Worksheet 

    '~~> Change this to the relevant worksheet 
    Set ws = ThisWorkbook.Sheets("Sheet1") 

    With ws 
     '~~> Set your range 
     Set myRange = .Range("F11:AP20") 

     '~~> Loop through the rows (11 to 20 in this case) 
     For n = myRange.Row To (myRange.Row + myRange.Rows.Count - 1) 
      '~~> Loop through the columns (F to AP in this case) 
      For j = myRange.Column To (myRange.Column + myRange.Columns.Count - 1) 
       If .Cells(n, j).Value < .Range("AU" & n).Value Then 
        .Cells(n, j).Interior.Color = 65535 
       Else 
        .Cells(n, j).Interior.ColorIndex = 2 
       End If 
      Next j 
     Next n 
    End With 
End Sub 
+0

好了試過這個代碼,它似乎沒有識別AU中的值(該值源於公式(= AQ +(AR * 2)) )會導致單元格引用爲零? – gduhoffmann

+0

您是否使用'.Range(「AU」&n).Value'而不是'Range(「AU」&n).Value'?注意Range對象之前的DOT? –

+0

謝謝,無視最後的評論,因爲我在引用AU時應該使用AT再次感謝完美的代碼! – gduhoffmann