[[20211213143844]] 『実行時エラー‘1004’ が出力』(なるほどなるほど) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『実行時エラー‘1004’ が出力』(なるほどなるほど)

以下のマクロを実行すると”実行時エラー‘1004’” が出力される時とされない時があります。何が良くないのでしょうか?
VBA初心者で見よう見まねで作成したのですが、原因が分からず教えて頂きたいです。宜しくお願い致します。

Sub TBZmarge()

    Dim sWS As Worksheet
    Dim dWS As Worksheet

    Set dWS = Worksheets("MargeSheet")

    dWS.UsedRange.Offset(1, 0).Clear

    For Each sWS In Worksheets
        If sWS.Name <> dWS.Name Then
            With sWS.UsedRange

                If .Rows.Count > 1 Then
                    .Offset(3, 0).Resize(.Rows.Count - 3).Copy _
                        Destination:=dWS.Cells(Rows.Count, 1). _
                                        End(xlUp).Offset(1, 0)
                End If

            End With
        End If
    Next sWS

    dWS.UsedRange.Sort Key1:=Range("A1"), Header:=xlYes
End Sub

< 使用 Excel:Office365、使用 OS:Windows10 >


 ちなみにどこの行でエラーが発生してますか?
 エラーが発生したときに、デバックのボタンを押すと、 
 黄色になっている行があると思うので、どこが黄色くなっているか教えてくださ。
 あと、詳細なエラーメッセージがあれば、それもお願いします。

 以下、当方には質問者の方のシートの内容は見えませんので、まったくの想像になりますが、

  .Offset(3, 0).Resize(.Rows.Count - 3).Copy  
 のところで、
 sWS.UsedRange.Rows.Count が 3行 以下だとエラーになりますので、確かめてください。
(´・ω・`) 2021/12/13(月) 15:16

デバッグを押すと以下が黄色になります。

エラーは出る時と出ない時が合って、再現中です。

                If .Rows.Count > 1 Then
                    .Offset(3, 0).Resize(.Rows.Count - 3).Copy _
                        Destination:=dWS.Cells(Rows.Count, 1). _
                                        End(xlUp).Offset(1, 0)
                End If
(なるほどなるほど) 2021/12/13(月) 15:18

 >Destination:=dWS.Cells(Rows.Count, 1). _
 .Ros.Count
 かな

(tkit) 2021/12/14(火) 08:04


 .Rows.Countが3以下のとき、.Rows.Count - 3の計算結果が1未満となり
 Resize(0)やResize(-1)という処理ができずエラーになっているのだと思います。

(きまぐれおじさん) 2021/12/14(火) 08:21


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.