2012年10月16日火曜日

Excel 2010:データの入力規則のドロップダウンボタンが消える

図の名前が変わるという話を昨日書いたのですが、そちらはこのことを調べていてたまたま気づいた件でした。

データの入力規則でリストを設定したセルから、ドロップダウンリストの▼ボタンが消えてしまいました。
オプションの「オブジェクトの表示」を「なし」にしているわけではありません。


入力規則を設定した直後から、この▼を「オブジェクトの選択と表示」で追ってみました。
▼は「Drop Down X」の名前で一覧に表示され、他のセルが選択されると非表示のマークに変わります。


名前は一時的につけられるもののようで、ブックを上書き保存しただけでも変わります。上の図では「Drop Down 1」が「Drop Down 2」に変わっています。

おもしろいことに、他のセルに移動して非表示の状態で保存すると「Drop Down」は一覧から消滅してしまいました。 セルに戻ると更新された名前で復活しました。


さて、一覧に表示されていればShapes("Drop Down X").Deleteとやって▼を削除することもできます。
もちろん意図的にそんなことをする理由は思いつきません。ところが実際に見たケースでは他にもオブジェクトが挿入されており、それらをまとめて削除するために以下のようなコードが実行されていました。

Dim shp As Shape
    For Each shp In ActiveSheet.Shapes
        shp.Delete
    Next

「Drop Down」は一覧になければこのFor Eachに引っかかりませんが、あれば引っかかって削除されてしまいます。


問題はその後です。
ブックが.xlsx形式の場合、先の例で見たように上書き保存すればまた「Drop Down」は復活しました。
ところが.xls形式だと上書き保存しても一度閉じてから再度開いても、復活することはありませんでした。それどころか、このシートでは他のセルに入力規則を設定しても▼が表示されなくなってしまいました。同じブック内の他のシートでは問題ありませんでした。

なお、この.xls形式のブックを.xlsx形式で保存し直したところ▼は復活しました。そういう仕様の違いなんでしょうが・・・新旧形式が混在してるとこんなことも起きるんだなぁとびっくりしました。

0 件のコメント:

コメントを投稿