• ベストアンサー

エクセルVBAでセルのFormulaHiddenが失敗!?

エクセル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

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

  • ベストアンサー
  • taocat
  • ベストアンサー率61% (191/310)
回答No.9

こんにちは。 暫く振りに訪ねてみれば、またまたヘンテコなことにトライしておりまするねぇ。。(^^; ヘンテコに興味あり、ということで一案。(^o^) ----------------------------------------------- Sub MerlionXX()  Dim Sht As Worksheet  Dim Cnt As Long  On Error Resume Next  For Each Sht In Worksheets    With Sht.Cells.SpecialCells(xlCellTypeFormulas)      .Locked = True      .FormulaHidden = True      Cnt = Cnt + .Cells.Count    End With  Next Sht    MsgBox Cnt & " 個のセル云々" End Sub ----------------------------------------------- それから、 >でも変ですねえ、WendyさんのもActivateしてないのに同じSpecialCellsで認識してるのに・・・。 これ、Merlionさんの勘違いではありませぬか? で、お訊きします。 「動作しない」とはどんな”状態”のことを仰っているのでせう。 少々興味ありです。 ところで、Merlionさん、 当方の尊敬する回答者のお二人、Wendy02さん、KenKen_SPさんのコードに ちょっとした、場合によっては重大な、ケアレスミスがあることにお気づきでせうか? コードを眺めただけでそれがお分かりになりましたら 次からは「お師匠さま」とお呼びせねばなりますまいねぇ。。(^o^)~~ 以上です。

merlionXX
質問者

お礼

道士さま、こんばんは。 ヘンテコですか?けっこう使うと思うんですが・・・・。 だから個人用マクロに書いてしまい、作動しなかったようです。 ご教示のコードは完璧に作動しました。ありがとうございます。 > 場合によっては重大な、ケアレスミスがあることにお気づきでせうか? 何度か試して気づいたのですが、一旦Setしたシートごとの対象範囲が、クリアされていない、またはクリアする位置が違っているため、数式が存在しないシートがあった場合、個数を正しくカウントしないということでしょうか?

その他の回答 (11)

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

お気づきの通り、セル結合が原因です。 回避策としては、 C.Locked = True を C.MergeArea.Locked = True のように結合セルのレンジという感じにきちんと指定するか、とりあえず出来れば良いということなら C.Activate Selection.Locked=True のように力技で実行するとかです。

merlionXX
質問者

お礼

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

関連するQ&A