dポイントプレゼントキャンペーン実施中!

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

A 回答 (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

こんな感じでいかがでしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/01/25 18:57

保護のかかった状態でしたら、



Sub Macro1()
Dim i As Integer
For i = 1 To 20 '<- ロックされていないセルの数
ActiveCell.Next.Activate
ActiveCell = ""
Next
End Sub

なんていういいかげんな手口もありますね。最初にA1あたりに移動しといた方が
いいですけど。
    • good
    • 0

#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
    • good
    • 0

下記のコードで可能なハズです。

ただしセル範囲が、あまり広いと時間がかかると思います。

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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!