簡體   English   中英

為什么我的If條件返回錯誤結果?

[英]Why my If condition is returning wrong result?

我是一名學生,目前正在我的一門課程中學習VBA,當前的任務是從.txt文件中提取數據並顯示並進行總計,然后對總計進行評分。 使用數組我在使用數組的前兩個部分中已經取得了成功,但是當嘗試將某個年級的總和考慮在內時,該數組僅考慮了起始數字。 有什么想法嗎? 下面的代碼

Sub Categories()

Dim Locale As String, State(1 To 50) As Variant
Dim Serial(1 To 50) As Single, i As Single
Dim path As String, j As Single
Dim Score(1 To 50, 1 To 7) As Single
Dim IndexGrade(1 To 50) As Single
Dim Total(1 To 50) As Single
Locale = ActiveWorkbook.path

path = Locale & "US_States.txt"

Open path For Input As #1

For i = 1 To 50 Step 1
    Input #1, Serial(i), State(i)
    Sheet1.Cells(1 + i, 1).Value = Serial(i)
    Sheet1.Cells(1 + i, 2).Value = State(i)
         For j = 1 To 7 Step 1
            Input #1, Score(i, j)
            Total(i) = Total(i) + Score(i, j)
            Sheet1.Cells(1 + i, 3).Value = Total(i)
        Next j
   Total(i) = Sheet1.Cells(1 + i, 3).Value
   If 0 <= Total(i) < 100 Then
    Sheet1.Cells(1 + i, 4).Value = "A"
    ElseIf 100 <= Total(i) < 200 Then
    Sheet1.Cells(1 + i, 4).Value = "B"
    ElseIf 200 <= Total(i) < 300 Then
    Sheet1.Cells(1 + i, 4).Value = "C"
    ElseIf 300 <= Total(i) Then
    Sheet1.Cells(1 + i, 4).Value = "D"
    End If
Next i

Close #1

End Sub

問題出在您的If條件上。 在VBA中1 < 2 < 1計算為true 這就是為什么即使您的total(i)大於100,它也始終評估為true,而您的elseif卻沒有發揮作用。

在VBA / VB6中,類型轉換簡直是邪惡的。


您需要重寫Ifelseif條件

例:

Sub test()

    Dim x   As Long
    Dim y   As Long

    x = 101
    y = 99

    '/ What you are doing
    If 0 <= x < 1 Then
        MsgBox "This is not python."
    End If

    '/ How you should do it.
    If y >= 0 And y < 100 Then
        MsgBox "This is how you do it in VBA."
    End If

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM