性格悪い人が優勝

お世話になります。VBA初心者です。
環境はWIN2000,EXCEL2000です。

下記のようなマクロを組んだらNextに対するForがありませんと、エラーが出てしまいました。
申し訳ありませんが、手直しお願いします。

やりたいことは、D97へコピーが終わったら、次はM7からコピーをし、M97へのコピーが終わったらV7からコピーを始めたいのです。

With sheetGR
For ii = 7 To 97 Step 10(行の指定)
For iii = 4 To 31 Step 9(列の指定)

If .Cells(ii, iii) = "" Then
.Range(.Cells(ii, iii), .Cells(ii + 4, iii + 2)).Value _
= Sheets("Result").Range("G20:I24").Value
End If

Exit For

If Cells(97, iii) <> "" Then Next iii
End If

Next ii
End With

A 回答 (4件)

For To Step


Exit For
Next
で一組になります。
If文内でNextの設定はできません。
この場合は下記の様になるのではないですか?
With sheetGR
For ii = 7 To 97 Step 10(行の指定)
For iii = 4 To 31 Step 9(列の指定)

If .Cells(ii, iii) = "" Then
.Range(.Cells(ii, iii), .Cells(ii + 4, iii + 2)).Value _
= Sheets("Result").Range("G20:I24").Value
End If

If Cells(97, iii) = "" Then Exit For
Next iii
Next ii
End With
    • good
    • 0

コードを一通り拝見したのですが、どうも処理の意図が読めません。

特に不可解なのが、1つめのIf文の後にある「Exit For」です。ここにExit Forを置いておくと、If文の結果に関係なく、「For iii = 4 To 31 Step 9」のループはiii=4で1回実行されただけで終わってしまいます(つまりFor文にしている意味がない)

また、ご質問の「Nextに対するForがありません」というエラーは、2つ目のIf文の中に「Next」を容れていることが原因です。Forは必ずNextと対になっている必要がありますので、条件式次第では実行されないIf文の中にNextを置くことはできません。条件によってはForループから抜け出したいという場合には、先ほどの「Exit For」を使います。

手直しをご要望でしたら、どういった処理を行いたいのか、もう少し詳しく書いていただければ対応できると思います。
    • good
    • 0

こんにちは。

maruru01です。

>Nextに対するForがありませんと、エラーが出てしまいました。
まさに、エラーメッセージの通り、変数iiiのループのNextがないということです。

Next iii

というコードを、

Next ii

の手前に追加しましょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。
やってみましたが、どうしてもエラーが出ました。
「If Cells(97, iii) <> "" Then Next iii」という部分が間違っているようです。
ありがとうございました。

お礼日時:2004/02/04 17:49

よく検証していないのではずしていたらごめんなさい。


単に「空欄だったらコピーする」を繰り返すのなら
単純に繰り返すだけでいいはずです。

With sheetGR
 For ii = 7 To 97 Step 10(行の指定)
  For iii = 4 To 31 Step 9(列の指定)
   If .Cells(ii, iii) = "" Then
    .Range(.Cells(ii, iii), .Cells(ii + 4, iii + 2)).Value _
    = Sheets("Result").Range("G20:I24").Value
   End If
  Next iii
 Next ii
End With

こんな感じ。
(見やすくするために全角空白を使って字下げしているので、コピー&ペーストしただけではエラーが出るかもしれません。)
    • good
    • 0
この回答へのお礼

ありがとうございます。
「D97にコピーし終わったら次の列へ行きたい」という形にしたいので、「If Cells(97, iii) <> "" Then Next iii」という部分は外せないんです。
ごめんなさい、ありがとうございました。

お礼日時:2004/02/04 17:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!