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

エクセル2000です。ブック内の全シートの計算式を非表示にするため以下のマクロを作成しました。
ところが実行時エラー1004「RangeクラスのLokedプロパティを設定できません」とエラーになります。
どうも結合セルがひっかかるようですが、理由がわかりません。
ご教示願えませんでしょうか?

Sub Formula_Hidden()
For Each ws In Worksheets
ws.Activate
For Each C In ActiveSheet.UsedRange
If C.HasFormula = True Then
C.Locked = True
C.FormulaHidden = True
i = i + 1
End If
Next C
Next ws
MsgBox i & "個のセルをFormulaHiddenしましたよん。"
End Sub

A 回答 (12件中11~12件)

的外れかもしれないが、下記では改善されませんか。


Sub Formula_Hidden()
Dim c As Range
Dim ws As Worksheet
For Each ws In Worksheets
ws.Activate
MsgBox ws.Name
MsgBox ActiveSheet.UsedRange.Address
For Each c In ActiveSheet.UsedRange
If c.HasFormula = True Then
MsgBox c.Address
c.Locked = True
c.FormulaHidden = True
i = i + 1
End If
Next c
ActiveSheet.Protect "", True, True, True
Next ws
MsgBox i & "個のセルをFormulaHiddenしましたよん。"
End Sub
Msgboxは確認のために入れたもので、意味はありません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
やはり結合セルでえらーになってしまいます。

お礼日時:2006/07/11 23:39

お気づきの通り、セル結合が原因です。


回避策としては、
C.Locked = True

C.MergeArea.Locked = True
のように結合セルのレンジという感じにきちんと指定するか、とりあえず出来れば良いということなら
C.Activate
Selection.Locked=True
のように力技で実行するとかです。
    • good
    • 0
この回答へのお礼

ありがとうございます。
Cが結合セルかどうかの判定はどのように書けばよいのでしょうか?

お礼日時:2006/07/11 23:37

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