[英]If elseif statement Excel VBA
在AI列中有目標產量,在BI列中有實際產量,在CI列中有兩者之間的差異。 我只想遍歷C列中的每一行,並根據策略存儲區標記每個值。 下面是我進入主文檔之前嘗試的示例代碼。
我的問題是如何在循環中的當前單元格上執行操作。 代碼只是為我單擊的最后一個單元格着色,而不是對要評估的單元格進行着色。 有什么建議么?
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
您需要在正確的單元格上應用.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 = ...
另一種方法是,使用以下方法將范圍DeltaRng
設置為“ Find
:
Worksheets("Test").Range("A1:Z1000").Find("Start Date")
,
然后,如果Find
成功,則使用Delta = DeltaRng.Offset(n, 3).Value
獲取右側的Delta
值3列。
最后,當你在你的內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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.