
VBAに慣れていないのですが、下記のマクロを組んでみました。
実行すると、コンパイルエラー Nextに対するForがありませんと出てしまいました。
原因が良く解らないので解る方いらっしゃいましたら教えてください。
それと、もっと良い書き方などありましたらアドバイスを下さい。
よろしくお願いします。
Sub レポート作成2each()
Dim ReportMaxRow As Long '上方向に最終行を検索し行番号を格納
Dim AddWsName As String 'シート名格納
Dim Ws As Worksheet 'オブジェクト格納
Dim i As Long '繰り返しのカウントを格納
Dim flag As Boolean '真偽
ReportMaxRow = Worksheets("レポート元").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To ReportMaxRow
If Cells(i, "N").Value <> "" Then
If Cells(i, "O").Value <> "" Then
AddWsName = Cells(i, "K").Value
For Each Ws In Worksheets
If Ws = AddWsName Then
flag = True
Next Ws ←ここでエラーになります。
If flag = True Then
Worksheets("レポート元").Cells(i, 1).EntireRow.Copy _
Destination:=Worksheets(AddWsName).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Else
Worksheets.Add
ActiveWorksheet.Name = AddWsName
Worksheets("レポート元").Cells(i, 1).EntireRow.Copy _
Destination:=Worksheets(AddWsName).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End If
MsgBox i + "行目の発注数の入力がませんでした。" & vbNewLine & "処理を中断します, _
vbOKOnly + vbExclamation, "お知らせ"
End If
Else
MsgBox i + "行目の発注数の入力がませんでした。" & vbNewLine & "処理を中断します", _
vbOKOnly + vbExclamation, "お知らせ"
End If
Next i
End Sub
No.3
- 回答日時:
一例です。
・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
No.2
- 回答日時:
>実行時エラー 438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。
このエラーは
>Dim AddWsName As String 'シート名格納
>Dim Ws As Worksheet 'オブジェクト格納
こうなって
>If Ws = AddWsName Then
こうなってる以上当たり前です。
"="の左右は同じ属性じゃないと比較できません。
確認してませんが多分
>If Ws.Name = AddWsName Then
で動くんじゃないかと。
No.1
- 回答日時:
>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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
なぜこんな初歩的なVBAのIf文で...
-
実行時エラー48発生時のDLL特定...
-
なぜエラーになるのでしょうか...
-
実行時エラー -'-2147417848
-
実行時エラー3001「引数が間違...
-
VBAがブレークモードになっ...
-
エラー:インデックスが配列の...
-
Invalid procedure call or arg...
-
VBAのエラー発生場所をメッセー...
-
C言語 mallocのエラーに関する質問
-
プロシージャ名の取得
-
VBAでのエラー
-
マクロについて教えてください...
-
VBA 別シートのセルから、文字...
-
EXCEL VBAマクロ中断でデバッグ...
-
Outlook.ApplicationをCreateOb...
-
vbaのvlookup関数エラー原因を...
-
SQL実行エラー
-
INSERT INTOステートメント構文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAがブレークモードになっ...
-
実行時エラー -'-2147417848
-
ExcelVBA Range クラスの Page...
-
マクロについて教えてください...
-
VBAでのエラー
-
【Excel VBA】マクロをボタンに...
-
実行時エラー48発生時のDLL特定...
-
EXCEL VBAマクロ中断でデバッグ...
-
なぜエラーになるのでしょうか...
-
実行時エラー3001「引数が間違...
-
OLEDB.NETで接続できない
-
INSERT INTOステートメント構文...
-
VBAのエラー発生場所をメッセー...
-
VB6+SQL サーバー 2000 で 実行...
-
Outlook.ApplicationをCreateOb...
-
ADODB.Streamを使用してUTF-8を...
-
カーソルオープンでエラー(ORA...
-
Invalid procedure call or arg...
おすすめ情報