2016-11-04 287 views
0

我想用vba對班級進行評分,這裏是我的代碼和信息。使用vba代碼進行分級

3個條件,如果等級爲100或以上,則顯示100+,如果是50或以上,則顯示50+。否則,它會顯示在50以下。我試圖在sheet2中創建一個按鈕,所以當我按下它時,代碼將在sheet1中運行。範圍每個月都會有所不同,所以這就是爲什麼我試圖循環到列A中的最後一行。我還向您展示了我試圖產生的結果的快照。我的問題是,當我運行代碼時,如果沒有if,它會出錯。需要建議或建議。

Sub Macro1() 
Dim I As Integer 
Dim lr As Integer 
Set ws = Worksheets("Sheet1") 
ws.Activate 
lr = Range("A" & Rows.Count).End(xlUp).Row 
For I = 2 To lr 
If Cells(I, 1).Value >= 100 Then Cells(I, 2).Value = "100+" 
    ElseIf Cells(I, 2).Value >= 50 Then Cells(I, 22).Value = "50+" 
     Else: Cells(I, 2).Value = "Below 50" 
End If 
Next I 
End Sub 

enter image description here

謝謝

+0

謝謝你,它就像一個魅力。 – sc1324

回答

2

你寫的了If聲明作爲內聯If,因爲運行的代碼是在同一行Then聲明。要使用ElseElseIf,您需要使用不同的格式。試試這個:

If Cells(I, 1).Value >= 100 Then 
    Cells(I, 2).Value = "100+" 
ElseIf Cells(I, 2).Value >= 50 Then 
    Cells(I, 22).Value = "50+" 
Else 
    Cells(I, 2).Value = "Below 50" 
End If 

這將解決你的第一個錯誤「否則如果沒有


就個人而言,我喜歡使用選擇案例爲這樣的邏輯。

Select Case Cells(I, 1).Value 
    Case Is >= 100 
     Cells(I, 2).Value = "100+" 
    Case Is >= 50 
     Cells(I, 22).Value = "50+" 
    Case Else 
     Cells(I, 2).Value = "Below 50" 
End Select