Excelで変数を使ってセルを指定するVBAを組んだとき、A列と1行目を空けると誤動作します。普段枠線が見えにくいなどの理由で、ExcelのA列と1行目を空ける変な癖があったのですが、ソレでこの問題(バグ?)を見つけました。
説明用のデータはExcel VBA 11で説明していますので、コメント文はそちらを参照してください。またソースの差異を識別するための差異部分以外は黒文字としています。
上の表に対して、全ての科目が60点以上で、合計点が200点を超え場合のみ「合格」と記述するVBAです。
--------------------
Sub 成績確定_B()
Sub 成績確定_B()
Dim wks As Worksheet
Set wks = Worksheets("成績表")
Dim i, j, k As Long
For i = 2 To wks.Cells(wks.Rows.Count, 1).End(xlUp).Row
For j = 2 To 4
If wks.Cells(i, j) < 60 Then
k = 0
Exit For
End If
k = k + wks.Cells(i, j)
Next
wks.Cells(i, 6) = "不合格"
If k > 200 Then
wks.Cells(i, 6) = "合格"
End If
Next
End Sub
--------------------
上は処理結果です。
VBAを以下の様に変更して実行すると・・・
--------------------
Sub 成績確定_B()
Sub 成績確定_B()
Dim wks As Worksheet
Set wks = Worksheets("成績表")
Dim i, j, k As Long
For i = 3 To wks.Cells(wks.Rows.Count, 1).End(xlUp).Row
For j = 3 To 5
If wks.Cells(i, j) < 60 Then
k = 0
Exit For
End If
k = k + wks.Cells(i, j)
Next
wks.Cells(i, 7) = "不合格"
If k > 200 Then
wks.Cells(i, 7) = "合格"
End If
Next
End Sub
--------------------