2013-10-30 35 views
0

我使用下面的VBA否則,如果代碼:否則沒有如果錯誤的Excel VBA

If ActiveSheet.Range(range_name).Value < "8.50%" Then 
    ActiveSheet.Shapes.Range(Array(shape_name)).Select 
    With Selection.ShapeRange.Fill 
     .Visible = msoTrue 
     .ForeColor.RGB = RGB(192, 0, 0) 
     .Transparency = 0 
     .Solid 
    End With 
    ElseIf ActiveSheet.Range(range_name).Value < "9.70%" Then 
    ActiveSheet.Shapes.Range(Array(shape_name)).Select 
    With Selection.ShapeRange.Fill 
     .Visible = msoTrue 
     .ForeColor.RGB = RGB(255, 255, 0) 
     .Transparency = 0 
     .Solid 
    Else 
    ActiveSheet.Shapes.Range(Array(shape_name)).Select 
    With Selection.ShapeRange.Fill 
     .Visible = msoTrue 
     .ForeColor.RGB = RGB(0, 255, 0) 
     .Transparency = 0 
     .Solid 
    End With 

當我運行此,這給出了一個錯誤:「否則沒有如果」。 所以我改變了別的行

ElseIf ActiveSheet.Range(range_name).Value >= "9.70%" Then 

不過它給人即使這有另外一個如果同樣的錯誤。這是爲什麼?第一個代碼也是正確的,不應該在第一個地方給出錯誤。那麼這是怎麼回事?提前致謝!

回答

3

這是因爲你缺少中間的End With,即這部分

With Selection.ShapeRange.Fill 
     .Visible = msoTrue 
     .ForeColor.RGB = RGB(255, 255, 0) 
     .Transparency = 0 
     .Solid 
+1

同意薩姆。你的'If'語句中的所有'With'語句都應該結束。 – L42

1

補充一點:

End If 

在最後一行。
這是爲了終止if聲明,就像您在With聲明中所做的一樣。

+0

雅那是我寫的,我忘了給它貼在這裏。無論如何謝謝:) – user2862496

+0

隨時伴侶。 :)我們很樂意提供幫助。爲了避免出現這種情況,請在代碼的開始處結束所有需要結束的語句。然後在中間對你的事件進行調整。 – L42

+0

Yup會記住這一點! :) – user2862496