- ベストアンサー
エクセル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
- みんなの回答 (12)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 暫く振りに訪ねてみれば、またまたヘンテコなことにトライしておりまするねぇ。。(^^; ヘンテコに興味あり、ということで一案。(^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^)~~ 以上です。
お礼
道士さま、こんばんは。 ヘンテコですか?けっこう使うと思うんですが・・・・。 だから個人用マクロに書いてしまい、作動しなかったようです。 ご教示のコードは完璧に作動しました。ありがとうございます。 > 場合によっては重大な、ケアレスミスがあることにお気づきでせうか? 何度か試して気づいたのですが、一旦Setしたシートごとの対象範囲が、クリアされていない、またはクリアする位置が違っているため、数式が存在しないシートがあった場合、個数を正しくカウントしないということでしょうか?