2016-09-29 72 views
1
Sub sumexeptblack() 

    For Each cell In Range("4:4") 
     If cell.Font.Color <> 0 Then 
     Range("A3").Value = Range("A3").Value + cell.Value 
     End If 
    Next cell 

End Sub 

我編寫了這段代碼,它工作正常,但是當我把它放在另一個循環上時,excel只是計算沒有任何錯誤或結果。第二碼爲:在vba中設置自定義顏色和公式

Sub sumallrowcolored() 
    Dim i As Integer 
    Dim e As Integer 
    e = 1 

    For i = 2 To 168 Step 2 
     e = i - e 
     For Each cell In Range("i:i") 
      If cell.Font.Color <> 0 Then 
       Range("Ae").Value = Range("Ae").Value + cell.Value 
      End If 
     Next cell 
    Next i 

End Sub 
+0

你在哪裏使用過'Range(「i:i」)'你想爲每個循環做些什麼?因爲'Range(「2:2」)'將會出錯,就像任何沒有提供列字母的地方一樣。 – Jordan

+1

@Jordan - 'Range(「2:2」)'是'A2:XFD2'或整個第二行。證明在立即窗口與'?範圍(「2:2」)。地址' – Jeeped

回答

2

如果我正確地理解你的代碼,你想通過行的所有細胞迭代(在第一部分中的行是4,在第二部分是i)。如果是這樣的話,你必須調整你這樣的代碼:

Sub sumallrowcolored() 
    Dim i As Integer 
    Dim e As Integer 
    e = 1 
    For i = 2 To 168 Step 2 
    e = i - e 
    For Each cell In Range(i & ":" & i) 
     If cell.Font.Color <> 0 Then 
     Range("A" & e).Value = Range("A" & e).Value + cell.Value 
     End If 
    Next cell 
    Next i 
End Sub 
+0

非常感謝...它的工作 有一點變化,'e =我 - e'必須'e = i - 1' –

0

爲了您的代碼,第二部分,你需要保持語音標記的e變量之外,因爲它是在VBA只是聲明。嘗試:

Sub sumallrowcolored() 

Dim i As Integer 
Dim e As Integer 
e = 1 

For i = 2 To 168 Step 2 
    e = i - e 
    For Each cell In Range("i:i") 
     If cell.Font.Color <> 0 Then 
      Range("A" & e).Value = Range("A" & e).Value + cell.Value 
     End If 
    Next cell 
Next i 

End Sub 
+0

感謝您的答覆哥們;) –

1

您需要檢查時使用引號,何時不定義Range object時使用引號。

Dim cell as range 
Dim i As Long, e As Long 
e = 1 
For i = 2 To 168 Step 2 
    e = i - e 
    'For Each cell In Rows(i)  'could also be Range(i & ":" & i) 
    'better to cut it down to the .UsedRange 
    For Each cell In Intersect(ActiveSheet.UsedRange, Rows(i)) 
     If cell.Font.Color <> 0 Then 
      'the following is a match operation; string concatenation should be a &, not a + 
      Range("A" & e) = Range("A" & e).Value + cell.Value 
     End If 
    Next cell 
Next i 

的字符串連接運算符是一個&在VBA,而不是一個++用於數學加法。我不完全確定你究竟想要什麼。

+0

絕對正確... 感謝您的解釋 –

相關問題