[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『保護がかかっていないセルの値の削除』(ひろけん)
いつも参考にしております。 あるシートで保護がかかっていないセルのみを見つけて値をクリアしたいのですが、 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.