|
いくつかコメントします。
(1)まず、インデントをきちんとつけることです。
これによってプログラムの構造が見やすくなるはずです。
Sub 掛け算で答えが55以下を表示し、その後はループしない()
Dim i As Integer
Dim j As Integer
Dim a As Integer
Dim sheetobj As Worksheet
Set sheetobj = ThisWorkbook.Worksheets("Sheet1")
With sheetobj
a = 55 '(←ココを56,57,58,59,60と増やしてみました)
For i = 1 To 9
For j = 1 To 9
If i * j > a Then
Exit For
Else
.Cells(i + 1, j + 1) = i * j
End If
Next j
If i * j > a Then
Exit For
End If
Next i
End With
End Sub
(いやきちんとやってます、ということなら、
投稿の際、それをコピーペイストするようにしてください)
(2)こうした作業をデバッグ(虫取り)といいますが、
そのための技法はご存じですか?
この場合は、ステップ実行(F8を押して、一行ごとに実行させる)が
有効です。自分の思い違いに気づけます。
(3)
> 条件として答え(a)が55以下となれば
> それ以上は何も記載しないというプログラム
「それ以上しない」とは、
・そのあとすべてなら、
Exit Subで抜けるべきだし、(そうではなさそう)
・その行は、それ以上しないということなら、
Exit Forはひとつでいいはずで、
If i * j > a Then
Exit For
End If
が不要ではないですか?
手を動かして確認してみて下さい。
|
|