重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

エクセル エラー 実行時エラー424と出ます。
会社の従業員名簿をエクセルで作成しています。
今までは、退職者は別で管理していたのですが、手間がかかるため以下のマクロでS列(19列)の退職欄に○がついていた場合は退職者シートへ移行し、名簿上削除するコードを作成し実行したところ、
名簿最大.Cells(i, 1).Resize(1, 20).Copy 退職者WS.Cells(退職者最大 + 1).Resize(1, 20)
で実行時エラー424発生してしまいます。
色々、調べながら作成したのですが、なぜ実行できないのかわからなく困っております。
修正が必要な個所等教えていただけると助かります。
よろしくお願いいたします。

以下、コードになります。

Sub Macro2()

Dim 名簿WS As Worksheet
Set 名簿WS = Sheets("社員名簿")


Dim 退職者WS As Worksheet
Set 退職者WS = Sheets("退職者")

Dim 名簿最大
名簿最大 = 名簿WS.Cells(Rows.Count, 1).End(xlUp).Row

Dim i
For i = 名簿最大 To 2 Step -1
If 名簿WS.Cells(i, 19) = "○" Then
退職者最大 = 退職者WS.Cells(Rows.Count, 1).End(xlUp).Row


名簿最大.Cells(i, 1).Resize(1, 20).Copy 退職者WS.Cells(退職者最大 + 1).Resize(1, 20)
名簿最大.Rows(i).Delete Shift:=xlUp
End If
Next

End Sub

A 回答 (4件)

変数の型を指定するのはその方がわかりやすいし間違いに気づきやすい(エラーによる注意喚起)と思います。


ただ宣言場所としては最近ですと宣言と使用場所は近くにって考えもあるようですね。
確かに他言語では比較的見られる光景であり、ぶちゃけそれが可能になってますからそこからVBAをやられているなら慣れの問題もあるのでしょうね。
    • good
    • 0

変数は型を指定し、


変数は変数で最初に宣言したほうが良いです
可読性が悪いです
    • good
    • 0

No.1です。



WSが抜けているだけではなく変数名も全角部分が違ってましたね。
    • good
    • 0

>名簿最大.Cells(i, 1).Resize(1, 20).Copy



似たような変数名で間違えているのでしょ。
WSが抜けてます。
    • good
    • 0

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

今、見られている記事はコレ!