- ベストアンサー
ロックされていないセル内をクリア
タイトルどおりの質問なんですが、範囲選択をしないでロックされていないセルの数値や文字、関数などを一度にクリアするにはどのようなマクロを組めばよいでしょうか? ちなみにExcel2000です。 教えてくださいm(__)m
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> セルの数値や文字、関数などを一度にクリア 「・・・関数など」の「など」とは、ちょっと曖昧な点がありますが、 取り敢えず、「ロック情報だけを維持して」というように解釈しますと Sub UnlockCellClear() Dim Rng As Range For Each Rng In UsedRange If Rng.Locked = False Then Rng.Clear Rng.Locked = False End If Next End Sub こんな感じでいかがでしょうか。
その他の回答 (3)
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
保護のかかった状態でしたら、 Sub Macro1() Dim i As Integer For i = 1 To 20 '<- ロックされていないセルの数 ActiveCell.Next.Activate ActiveCell = "" Next End Sub なんていういいかげんな手口もありますね。最初にA1あたりに移動しといた方が いいですけど。
- wildcard
- ベストアンサー率54% (54/100)
#1ですが、コードを一部間違えてました。スイマセン(^^; 正しくは↓です。ただし、シート保護等がかかっていない状態を想定しております。先にシート保護を解除してから、下記コードを実行して下さい。 Sub Macro1() 'もしも決まったセル範囲でしたら、下記a,bに直接数値を代入した方が '良いかも知れません。(例:A1~G50なら、a=50とb=7) Dim a, b, c, d As Long a = Range("A1").CurrentRegion.Rows.Count '行数(整数) b = Range("A1").CurrentRegion.Columns.Count '列数(整数) Application.ScreenUpdating = False For c = 1 To a For d = 1 To b If Cells(c, d).Locked = False Then _ Cells(c, d).ClearContents Next d Next c Application.ScreenUpdating = True End Sub
- wildcard
- ベストアンサー率54% (54/100)
下記のコードで可能なハズです。ただしセル範囲が、あまり広いと時間がかかると思います。 Sub Macro1() 'もしも決まったセル範囲でしたら、下記a,bに直接数値を代入した方が '良いかも知れません。(例:A1~G50なら、a=50とb=7) Dim a,b,c,d As Long a = Range("A1").CurrentRegion.Rows.Count '行数(整数) b = Range("A1").CurrentRegion.Columns.Count '列数(整数) Application.ScreenUpdating = False For c = 1 To a For d = 1 To b If Cells(c, d).Locked = False Then _ Cells(c, d).Value = "" Next b Next c Application.ScreenUpdating = True End Sub
お礼
求めていたのはまさにコレです。 皆さん、ありがとうございましたm(__)m