まりふのひと

家計簿77の収支シート、備考より右は入力できないよう(更新禁止)にしてみた

 私の家計簿77の収支シートは次のようにしてある。


 毎日買い物している訳ではないが、入力する時(ホームセンターでの買い物が多い)は、かなり細かく入力するようにしている。
で、「備考」まで入力し、次の行にカーソルを動かすのが面倒だが仕方ない...
 なんとか上手い方法がないものだろうか‥‥ と(布団の中で)考えていたが、「列で編集禁止にすれば簡単でいいじゃん!」との結論になり、Windows7/Excel2010で実践してみた。

  • 参考サイト)Excelシートの特定のセルを編集禁止にする(@IT)
     Excelの保護機能は、「シート全体のロック」と「特定セルのロック解除」で成り立っている。
    基本的な操作手順としては、保護が不要なセル(相手に編集してもらうセル)を選択してセルのロック解除を指定しておき、次にシート全体をロックする、ということになる。
    1. まずは、保護しなくてもよいセルを選択する。複数のセルを選択するには、[Ctrl]キーを押しながら目的のセルをクリックすればよい。
    2. セルを選択したら、リボンの[ホーム]タブにある「セル」枠−[書式]をクリックする。
       メニューが表示されたら、[セルのロック]をクリックしてオフにする。
      こうしておくと、後からシート全体の保護を実行しても、指定したセルは自由に編集できる状態が保たれる。



§シートを保護する
  1. A列〜J列を列選択する。
    • A列を入れておかないと並べ替えができない。(たぶん)
  2. [ホーム]タブ/セルGr.の[書式]をクリックし、
  3. [セルのロック]をオフにする。
    (4)これはデフォルトでオンになっているはずだ。鍵マークの周りに黄色い枠が表示されているのが、ロックがオンの状態を表す。‥‥
  4. シート見出しを右クリック ⇒[シートの保護]を実行する。
  5. 【シートの保護】ダイアログボックスで
    1. Rシートとロックされたセルの内容を保護する
    2. シートの保護を解除するためのパスワード は、入力しない。
    3. このシートのすべてのユーザーに許可する操作
      Rロックされていないセル範囲の選択 のみにチェックを入れ、
    4. [OK]

 その後、【シートの保護】ダイアログボックスは下図に変えた。

    • ☑セルの書式設定:セルの書式を変更できるようにするため。
    • ☑列の書式設定:列幅の変更を可能にするため
  • 何れにしても行の削除はできない。

 以上で、A列〜J列以外のセルは選択できなくなった。


§シートの保護を解除する

 参考サイトには、次のように書いてある。

 なお、シートの保護を解除するには、上記と同じくシートのタブを右クリックしてから、[シート保護の解除]をクリックすればよい。

 確かにこれでロックは解除された。
但し、セルのロックはオンにならない。このまま放置して問題ないだろうか...

  1. [シート保護の解除]を行うと、確かに解除前は入力できなかったセルに入力できるようになる。(カーソルが移る)
  2. しかし、[ホーム]タブ/セルGr.の[書式]をクリックしても[セルのロック]はオンになっていない。
     勿論、[セルのロック]をクリックするとオンになるが...
  3. 再度、シートタブを右クリック ⇒[シートの保護]をクリックすると、保護される。(たぶん)


§検証結果
  1. [メニュー]⇒[集計する]で「実行時エラー '1004'」となった。(右図)
     これは、A列を更新対象にしなかった(=更新禁止にした)ので、日付で並べ替え後、A列に連番を付けることが出来なかったためと推定される。
  2. A列も更新対象にすると、上記のエラーは出ず、正常に動作した。(たぶん)
  3. 行削除が出来ない。
     間違いを見つけたので、この行は削除しようと‥‥
    • 行選択ができない。
    • 右クリックしても[削除]はグレイアウトされている。
  4. 因みに‥‥ すべてのセルを選択しようとしたが出来なかった。



 畑に出て気分転換‥‥‥‥‥‥ 戻って、更にネットを検索した...

  • 保護/解除する (Office TANAKA)
    ■ 保護によるマクロの制限
     シートを保護すると一部の機能が使用できなくなります。手動操作の場合ならともかく、マクロで保護されたシートを操作するときには注意が必要です。使用不可の機能をマクロから操作しようとするとエラーになるからです。そこで、ユーザーの手動操作では一部の機能を使用不可としますが、マクロからは全ての操作を使用できるという便利な保護があります。これには、Protectメソッドの引数 UserInterfaceOnly に True を指定します。
    Sub Sample07_5()
      ActiveSheet.Protect UserInterfaceOnly:=True
    End Sub
    • Office TANAKA さんには、ただただ感謝するのみ...


§今日の結論

 家計簿77の収支シートに「入力する列」以外カーソルが動かないよう「シートの保護」を行った。
その後マクロに“ActiveSheet.Protect UserInterfaceOnly:=True”を入れた。

  1. B列〜J列のみ「更新可能」にしたが、マクロを含め問題なく動作した。
    • 日付の並びにこだわる場合は、A列も更新可能にする必要がある。
  2. 行削除が出来ない。行挿入も列挿入もできない。(要注意
  3. 空のデータを入力すると、カーソルが1行目に移る現象がある。
    • [Enter]キーを押して動作確認中に発見? した。
  4. とりあえず[集計する]と[翌月分シート作成]のマクロが動くよう改修した。
     残りは今後行い、完了後、公開(バージョンアップ)する予定。

追伸(2014.11.28)

 その後、判ったことは‥‥

  1. [費目]シートの[解析]を使った後、手動でフィルターの解除ができない。
  2. その後、[データ]タブのリボンでグレイアウトされている機能が多いことに気が付いた。
    ≪シートの保護 なし≫

    ≪シートの保護 あり≫

    • [並べ替え],[フィルター],[データの入力規制],[小計]等が使えない。
  3. とりあえず、メニューに[シート保護の解除]ボタンを作った。

追伸2(2017.07.24)

  • Excel2013で、[翌月分シート作成]不具合対応のため、とりあえず「」とした。