- ベストアンサー
エラー Nextに対するForがありませんについて
- VBAに慣れていない方が、マクロを組んでいる途中にエラーが発生しました。コンパイルエラー「Nextに対するForがありません」というエラーメッセージが表示されます。解決策を教えてください。
- また、マクロの書き方に関するアドバイスもいただけると助かります。
- よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
NO3です。 (1)追加したFlagのリセットが誤っておりますので訂正します。 Flag = False (2)回答コードのシート名はシミュレート用に変更していますので元に戻して下さい。
その他の回答 (3)
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 ・Msgboxの変更 ・Wsのプロパティ追加 ・Endifの追加 ・不要なループの削除(Exit For追加) ・Flagのリセット追加 ReportMaxRow = Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To ReportMaxRow If Cells(i, "N").Value = "" Or Cells(i, "O").Value = "" Then MsgBox i & "行目の発注数の入力がませんでした。" & vbCrLf & "処理を中断します", _ vbOKOnly + vbExclamation, "お知らせ" Else AddWsName = Cells(i, "K").Value For Each Ws In Worksheets If Ws.Name = AddWsName Then Exit For End If Next If flag Then Worksheets("sheet1").Cells(i, 1).EntireRow.Copy _ Destination:=Worksheets(AddWsName).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) flag = True Else Worksheets.Add ActiveWorksheet.Name = AddWsName Worksheets("sheet1").Cells(i, 1).EntireRow.Copy _ Destination:=Worksheets(AddWsName).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) End If End If Next i
- FEX2053
- ベストアンサー率37% (7995/21381)
>実行時エラー 438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。 このエラーは >Dim AddWsName As String 'シート名格納 >Dim Ws As Worksheet 'オブジェクト格納 こうなって >If Ws = AddWsName Then こうなってる以上当たり前です。 "="の左右は同じ属性じゃないと比較できません。 確認してませんが多分 >If Ws.Name = AddWsName Then で動くんじゃないかと。
補足
お返事ありがとうございます。 そうでした^^;ご指摘ありがとうございました。
- andy_kun
- ベストアンサー率23% (64/274)
>For Each Ws In Worksheets >If Ws = AddWsName Then >flag = True ここにEnd Ifがないから >Next Ws ←ここでエラーになります。
補足
早いお返事ありがとうございます。早速直してみましたが、 実行時エラー 438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。 と出てしまいました。 どこが問題なのでしょうか…変数AddWsNameを入れる事が出来ないのでしょうか? For Each Ws In Worksheets If Ws = AddWsName Then ←ここが黄色でマークされています。 flag = True End If Next Ws
お礼
お返事ありがとうございます。 御丁寧にソースまで作成ありがとうございました。 構築のやり方など大変参考になりました。 ありがとうございました。 また質問した際はよろしくお願いいたします。