1
私は現在、自分のクラスの1つでVBAを勉強している学生です。現在の割り当てでは、.txtファイルからデータを取り出して表示し、それを合計して合計をグレードします。配列を使って私は配列を使って最初の2つの部分で成功しましたが、グレードの合計を考慮に入れようとするとき、配列は開始数だけを考慮に入れます。何かご意見は?以下のコードなぜ私の条件が間違った結果を返すのですか?
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
をなぜあなたはあなたの合計(I)の上に書き込みされていますか?また、「IF」条件が間違っている。このVBAはPythonではありません。 – cyboashu
私はあなたが 'Sheet1'コードネームを使用していて、' .Value'メンバーコールを明示的に指定しているのが大好きです。しかし、あなたのインデントはいくつかの助けを使うことができ、変数はその使用方法に近いと宣言されるべきです。プログラミングに賢明で(言語にとらわれない)、手続きは意味のある名前でなければなりません。*これは、処理と出力から入力を分離するだけで、より小さく、より特殊化された手続きや関数に分解されるはずです。いくつかの便利なリンクについては、私のユーザープロファイルを参照してください。 –