[[20190619095702]] 『ロックされたセル以外を削除するVBAを複数シートax(もぐやん) ページの最後に飛ぶ

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

 

『ロックされたセル以外を削除するVBAを複数シートにループさせたい』(もぐやん)

VBA初心者です。

50人程度の社員のタイムカードをエクセル表に転記して計算しています。
数式の入ったセルをロックし、ロックされたセル以外を選択して値をクリアする、というマクロを探し出しまして、各シートごとに同じマクロを走らせていたのですが、色々な変革を経て、一気に複数シートにループさせて削除したいと思っています。

セルの選択をループさせて、値をクリアしたら次のシートに移って…という作業だと思うのですが、1つ目のシートの処理が完了し次のシートに移ると、エラーが出て中断されてしまいます。

どなたかどこが誤っているのがご教示いただけませんでしょうか。

    Dim c As Range, Target As Range
    Dim lRow As Long, i As Long
    For i = 3 To Worksheets.Count
        Worksheets(i).Select
        lRow = Cells(Rows.Count, 12).End(xlUp).Row

            For Each c In Range(Cells(5, 4), Cells(lRow, 15))
                If c.Locked = False Then
                    If Target Is Nothing Then
                        Set Target = c
                    Else
                        Set Target = Union(Target, c) '←(デバックではここが強調表示されます)
                    End If
                End If
            Next
        If Not Target Is Nothing Then Target.Select
            Selection.ClearContents
            ActiveSheet.Range("A1").Select
    Next

宜しくお願い致します。

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


 Unionセットをシートをまたがってセットし続けているから、必要に応じてリセット。
(BJ) 2019/06/19(水) 10:27

BJ 様

お返事ありがとうございます。

リセットですか!そうだったんですね。

Set Target = Nothing

を追加して、うまくいきました。

ありがとうございました。
(もぐやん) 2019/06/19(水) 11:21


コメント返信:

[ 一覧(最新更新順) ]


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