• ベストアンサー

ロックされていないセル内をクリア

タイトルどおりの質問なんですが、範囲選択をしないでロックされていないセルの数値や文字、関数などを一度にクリアするにはどのようなマクロを組めばよいでしょうか? ちなみにExcel2000です。 教えてくださいm(__)m

質問者が選んだベストアンサー

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.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 こんな感じでいかがでしょうか。

table_1969
質問者

お礼

求めていたのはまさにコレです。 皆さん、ありがとうございましたm(__)m

その他の回答 (3)

回答No.3

保護のかかった状態でしたら、 Sub Macro1() Dim i As Integer For i = 1 To 20 '<- ロックされていないセルの数 ActiveCell.Next.Activate ActiveCell = "" Next End Sub なんていういいかげんな手口もありますね。最初にA1あたりに移動しといた方が いいですけど。

  • wildcard
  • ベストアンサー率54% (54/100)
回答No.2

#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)
回答No.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).Value = ""     Next b   Next c   Application.ScreenUpdating = True End Sub

関連するQ&A