• ベストアンサー

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

質問者が選んだベストアンサー

  • ベストアンサー
  • lasichi
  • ベストアンサー率31% (122/389)
回答No.2

End if が足りません。 ifを二つ使っているのでend ifも2つ必要です。 NEXTに対応するForがないというエラーはカッコが足らない時や、 for文の中身がおかしい時にも出ます。

tfshy
質問者

お礼

ご丁寧に有難うございました。 大変勉強になりました。

その他の回答 (3)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.4

皆さん指定している通り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

tfshy
質問者

お礼

ご丁寧に有難うございました。 大変勉強になりました。

  • lovesens
  • ベストアンサー率30% (48/158)
回答No.3

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

tfshy
質問者

お礼

ご丁寧に有難うございました。 大変勉強になりました。

noname#118114
noname#118114
回答No.1

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 にしてください。

tfshy
質問者

お礼

ご丁寧に有難うございました。 大変勉強になりました。

関連するQ&A