[[20050515204217]] 『保護がかかっていないセルの値の削除』(ひろけん) ページの最後に飛ぶ

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

 

『保護がかかっていないセルの値の削除』(ひろけん)
 いつも参考にしております。
 あるシートで保護がかかっていないセルのみを見つけて値をクリアしたいのですが、
 VBAで簡単に?できないでしょうか?

 まだ未熟者ですのでよろしくお願いします。

 VBAではありませんが、
 シートに保護がかかっている状態で、
 [TAB]キーでカーソルがスキップしてとまるセル、
 そこが保護の対象となっていないセルですから、
 [Delete]キーでそのセルの値を削除、
 というのではいかがですか?

 (セワヤキ)

 おはようございます。
 >保護がかかっていないセル
ロックがかかってないセルとして
以下でどうでしょうか?
Option Explicit
Sub てすと()
Dim MyAry() As Variant
Dim MyAreas As Areas
Dim MyArea As Range, C As Range
Dim i As Long, j As Long
With ActiveSheet
    .Protect , , , , True
    On Error Resume Next
    Set MyAreas = .UsedRange.SpecialCells(xlCellTypeConstants).Areas
    On Error GoTo 0
    If MyAreas Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    For Each MyArea In MyAreas
        With MyArea
            If .Count = 1 Then
                ReDim MyAry(1 To 1, 1 To 1)
            Else
                MyAry = .Value
            End If
        For i = 1 To UBound(MyAry, 1)
            For j = 1 To UBound(MyAry, 2)
                Set C = .Item(i, j)
                If C.Locked = False Then C.Value = ""
            Next j
        Next i
        End With
    Next
    Application.ScreenUpdating = True
End With
Erase MyAry
Set C = Nothing
Set MyAreas = Nothing
End Sub
(SoulMan)


 セワヤキさん、SoulManさん、ありがとうございました。今回はVBAでいきたいと思います。
 サンプルのマクロを実行しました。いい感じに動きました。助かりました。
 しかし、一ヵ所セルを結合した個所がありまして、そこでエラーになってしまいます。
 回避はできないのでしょうか?度々、申し訳ございませんが、よろしくご教示ください。
 (ひろけん)

 こんばんは!
 これを
 >If C.Locked = False Then C.ClearContents
 これに
 If C.Locked = False Then C.Value = ""
 してみてください。
 上のコードは修正しておきました。
(SoulMan)

 SoulManさん、希望りにできました!本当にありがとうございました。
  (ひろけん)

コメント返信:

[ 一覧(最新更新順) ]


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