まりふのひと

マクロ家計簿77のバグを修正し、バージョンを1.44bとした

 マクロ家計簿77.xlsm のバグを修正し、バージョンを 1.44bとしました。
家計簿77の手引きに沿って最新バージョンにしてください。

§1.更新のいきさつ

 家計簿77に関する質問

 医療費通し番号を付けようとしましたがエラーが出て付きませんでした。 
「メニュー」から「シートの保護」「シートの解除」を行なったら通し番号が付きましたが、支出(合計金額)の所が下記のようになりました。

対処方法が解りません、どうすればよいのでしょうか?

が切っ掛け‥‥


§2.「医療費通し番号を付けようとしましたがエラーが出て付きませんでした」の件

 通し番号は、

  • 列を作るのは任意(作らなくてもよい)で、「支出」と「備考」の間であればどこでもよいが、項目名は必ず“通し番号”とする。
  • 中身は 7桁(西暦年4桁+連番3桁)の数字。
  • 7桁の数字を単に並べると間違い易い。カンマを入れるのもおかしいので、セルの書式設定(“0000-000”)でハイフンを入れて表示している。
    • 通し番号が入っているセルをアクティブにし、数式バーを見ればわかる。


 そこで、[通し]ボタンをクリックする(または Ctrl+Shift+T)都度、セルの設定を行っている。
一方、バージョン1.41で[メニュー]に追加した[シートの保護]で、「備考」で[Enter]すると折り返す機能を追加した。
 この機能の説明時、手動で設定する方法(マクロはこの方法で作ったもの)を紹介したが、
検証で判ったことは【シートの保護】ダイアログボックス、

  • ☑セルの書式設定
  • ☑列の書式設定
  • □行の書式設定
    • 行の初期設定にチェックを入れても、「備考」列より右の行はロックされるので効かない。

 上二つの書式設定にチェックを入れておかないと、ロックされてしまい書式設定ができない! 結果、

実行時エラーが出る...(たぶん)

≪対応≫
  1. メニューより、一旦[保護の解除]を行った後、
  2. [シートの保護]を行う。


§3.「このセルには数式が含まれますが、ロックされていないため変更されないように保護することが出来ません。」の件

 コメントで確認したら、このセルには数式(“=1210+328”)で入力した旨のコメント返しがあった。
 私もチョイチョイやる手で、エラーインジケータには気づいていない。
見た目には気が付かないので、マクロまで作ってチェックした*1 が、エラーインジケータが付いている「支出」セルは見つけられなかった...



 Yahoo!知恵袋に‥‥

  • エクセル2003での質問です。(Yahoo!知恵袋 2008/12/1)
     例えばA1のセルに入力したものをA5,A6、A7に飛ばすとします。
      (A5,A6,A7に「=A1」と入力します)
    この場合、A5からA7にA1と同じものが表示されますが、同時にセルの隅に緑色の三角がでます。隣のびっくりマークにカーソルをあわせると「このセルには数式が含まれますがロックされていないため変更されないように保護することが出来ません」と、でます。
     これはどういう意味でしょうか。セルをロックしたほうがいいのですか?
    > セルをロックしたほうがいいのですか?
     ロックするべきだと勝手にエクセルが判断して緑の三角を出しています。あなたがロックしなくてもいいと思うのならしなくても大丈夫です。書き変える必要があるならロックしない方が賢明だと思います。

    > ロックせずに放っておいてもいいのでしょうか。何も支障はでませんか?
    > またその場合、緑の三角はずっとセルに表示されるのでしょうか。
     その緑の三角が消えないだけで特に問題はありません。そのままにしておくと緑の三角はずっと表示されたままになりますので、消したい場合はbenikujaku0124さんの書かれている*2 とおりに設定を変更すれば表示されなくなると思います。

 Microsoft Office には

  • "数式の保護を解除します" というメッセージが表示される

    現象

     このメッセージが表示される状況は次の 2 つです。
    • 数式が含まれるセルの左上隅に緑の三角形が表示されている。

    原因

     既定で、すべてのセルは、誤って変更されたり権限のないユーザーによって変更されないようにロックされています。今回のケースでは、数式が含まれるセルがロックされていません。

 考までに、

  • 【Excel】セル左上の緑の三角形は一体何? エクセルの素朴な疑問と対策ワザ

    緑の三角形の秘密

     この緑の三角形は「エラーインジケータ」と呼ばれ、入力された内容に対してExcelが「エラーかも?」と判断した場合に表示されます。
     エラーインジケータは、入力した値や数式にエラーの可能性があるときに表示されます。例えば、次のような場合です。
    • 書式が文字列に設定されているセルに数値が入力されたとき
    • セルに入力された数式にエラーがあるとき
    • 空白のセルを数式が参照しているとき
     エラーインジケータが表示された場合、無視しても特に問題ない場合がほとんどですが、計算結果に間違いが出る恐れもあります。

    エラーインジケータを無視する

     計算などで特に困っておらず、このエラーインジケータが表示され続けるのが邪魔だと判断したときは、消すことができます。
    1. エラーインジケータが表示されたセルをクリックすると、セルの脇に「!」マークのアイコン(①)が表示されます。このアイコンの上にマウスポインターを載せてみましょう。
    2. 「!」マークのアイコンの色が変わりますので、右側に新たに表示された[▼](②)をクリックしましょう。
    3. 表示されたメニューから[エラーを無視する](③)をクリックしましょう。
    これでエラーが無視されるようになります。


◆再現テスト
  1. Excel2013を起動し、
  2. 空白のブックを開く。
  3. 「保護」の規定値を知る。
    1. ホーム・タブ/セル・グループの[書式]をクリックすると‥‥
      • シートは保護されていない。
      • セルはロックされている
      ことが判る。
  4. 計算式を入力した後、セルのロックを外す。
    1. セルA1に “=1+2”を入力する。
    • “3” が表示されるだけで、エラーインジケータは出ない。

    1. 列Aを選択し、
    2. ホーム・タブ/セル・グループの[書式]をクリックし、
    3. [セルのロック]をオフにする。
    4. セルA1を選択するとエラーインジケータが表示され、
    5. をポイントすると
      「このセルには数式が含まれますが、ロックされていないため変更されないように保護することが出来ません。」
      と表示される。

  5. セルをロックすると‥‥
    1. 列Aを選択し、
    2. ホーム・タブ/セル・グループの[書式]⇒ [セルのロック]をオンにすると、
    3. セルA1のエラーインジケーターは消える。
◆シートを保護するには

 上記サイトの手順でシートを保護し、再現するか確認する...

  1. Excel2013を起動し、
  2. 空白のブックを開く。
  3. セルA1に計算式 “=1+2” を入力する。
  4. エラーインジケーターは表示されない。

  5. 列A〜Cを選択する。
  6. Ctrl+1 ‥‥ テンキーの1は不可
  7. 【セルの書式設定】ダイアログボックスで
    1. [保護]タブを選択し、
    2. ☐ロック のチェックを外し、
    3. [OK]
  8. セルA1にエラーインジケーターが表示され、
    をポイントすると
    「このセルには数式が含まれますが、ロックされていないため変更されないように保護することが出来ません。」
    と表示される。 ∵ロックされていないためだろう...

  9. シートを保護する。
    1. 校閲・タブ/変更・グループの[シートの保護]をクリックする。
    2. 【シートの保護】ダイアログボックスで、
      1. ☑ロックされたセル範囲の選択 のチェックを外し、
      2. [OK]。
    3. セルA1のエラーインジケーターが消える。
      • 設定を変え【セルの書式設定】ダイアログボックスを表示させると、[保護]タブが消えている...
      • ホーム・タブ/セル・グループの[書式]⇒「保護」を見ると、[セルのロック]はグレイアウトされている。
    4. [Enter]でカーソルをに移動させると、セルA1 ⇒ B1 ⇒ C1 ⇒ A2 ⇒ B2 ⇒ C2 と移動する。
      • 1行、何も入力しないで[Enter]すると、カーソルの移動が変わる...

  10. シートの保護を解除する。
    1. 校閲・タブ/変更・グループの[シートの保護の解除]をクリックすると、
    2. セルA1にエラーインジケーターが表示される。

  11. セルのロックをオンにする。
    1. 列A〜Cを選択し、
    2. ホーム・タブ/セル・グループの[書式]⇒[セルのロック]をオンにする。
    3. セルA1のエラーインジケーターが消える。
参考
  • [セルのロック]をオフにしないでシートの保護を行うと、入力できなくなった。
◆今日の結論
  1. マクロ家計簿77の[保護の解除]のコードを検証すると、シートの保護解除後、セルのロックを行っていないことがわかった。
  2. このため、山口ばあばさんが、[保護の解除]を行うと、セルのロックがオフのままなので、エラーインジケーターが表示された‥‥ と推定される。
  3. そこで、マクロ家計簿77.xlsm の[保護の解除]のコードを改修し、バージョンを 1.44b とした。
  4. 新バージョンをインストール後、[保護の解除]を行っても、エラーインジケーターは表示されない‥‥ と推定される。


*1:バージョン1.44bで、「支出」列を選択し、Ctrl+Shift+K

*2:Excel2013では、ファイル ⇒ オプション ⇒ 数式 にある「エラーチェック ルール」の ☑数式を含むロックされていないセル のチェックを外す。