- ベストアンサー
VBの初歩で躓き
VBに初チャレンジしましたが、下記を実行しようとすると NEXTに対応するForがないというエラーが出ます。理由が分かりません。 Sub セル() For i = 1 To 10 Cells(i, 1) = "" Cells(i, 2) = "" If Int(i / 2 * 2) = i Then Cells(i, 1) = "abc" Else If Int(i / 2 * 2) <> i Then Cells(i, 2) = "xyz" End If Next End Sub
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
End if が足りません。 ifを二つ使っているのでend ifも2つ必要です。 NEXTに対応するForがないというエラーはカッコが足らない時や、 for文の中身がおかしい時にも出ます。
その他の回答 (3)
- ham_kamo
- ベストアンサー率55% (659/1197)
皆さん指定している通りIf~End Ifが正しく対応してないのが原因ですが、そもそもこのロジックだと2番目のIf条件は不要ですね。 Sub セル() For i = 1 To 10 Cells(i, 1) = "" Cells(i, 2) = "" If Int(i / 2 * 2) = i Then Cells(i, 1) = "abc" Else Cells(i, 2) = "xyz" End If Next End Sub
お礼
ご丁寧に有難うございました。 大変勉強になりました。
- lovesens
- ベストアンサー率30% (48/158)
CellとありますがExcelVBAでしょうか、VBのスプレッドかなにかでしょうか?(valueなし?) 変数宣言等はしないのですか(省略されました?) とりあえずNEXTに対応するForがないというのはEnd ifが足りないせいですね。私だったら下のように書きます。 Sub セル() Dim i as Integer For i = 1 To 10 Cells(i, 1).value = "" Cells(i, 2).value = "" If Int(i / 2 * 2) = i Then Cells(i, 1).value = "abc" Else If Int(i / 2 * 2) <> i Then Cells(i, 2).value = "xyz" End If End if←これがないです Next i End Sub
お礼
ご丁寧に有難うございました。 大変勉強になりました。
If Int(i / 2 * 2) = i Then Cells(i, 1) = "abc" Else If Int(i / 2 * 2) <> i Then Cells(i, 2) = "xyz" End If このIF文が原因です。 これだと「If Int(i / 2 * 2) <> i Then」の条件式が、 「Int(i / 2 * 2) = i」以外の場合の処理の中でやっていることになります。 この場合は、 Else If Int(i / 2 * 2) <> i Then を ElseIf Int(i / 2 * 2) <> i Then にしてください。
お礼
ご丁寧に有難うございました。 大変勉強になりました。
お礼
ご丁寧に有難うございました。 大変勉強になりました。