投稿日 | : 2006/04/12(Wed) 17:11 |
投稿者 | : ダンボ |
URL | : |
タイトル | : Re^4: コンパイルエラーになるのですが |
> 「cmdLOCKという名前のコマンドボタン」は、複数のシートにあるんですね?
はい、そうですね。
> そして、あるシートがアクティブの時にcmdLOCKが押されるんでしょうか?
そうとは限らないのが、本件の質問の発端で。。(いや本件は押すんじゃないです)
基本仕様/外部仕様:
・各シートには保護したいセルと記入可能なセルがある。
・原則としてガチガチにプロテクトしたいのだがそうも行かない事情がある。
(Excel2000ではシート保護時には非保護セルでも書式の変更ができない)
・従って各シートにcmdLOCKボタンを設けて一時的にシート保護を解除可能にする。
(cmdLOCKボタンはトグルでキャプションが「シート保護を掛ける」/「シート保護をはずす」)
・ユーザが最後に終了するときにシート保護を解除したまま終わる可能性は高い。
・従ってExcelブック起動時にすべてのシートのプロテクトを強制的に掛ける。
(cmdLOCKボタンのキャプションも「シート保護をはずす」に初期設定する)
この最後の処理のためにForceLock()を使います。ユーザがまだシートを操作できない内にですね。
各シートを順次ActivateしていってForceLockを(方式1)で呼ぶという手もありますけれど、
・意味のないActivateは嫌だ。美しくない。
・各シートのActivatedイベントには別な処理がある/追加可能性がある。特殊な呼び出し場合を排除して
おきたい。