<< 位置のみ表示はできません | main | 循環参照の見つけ方とバグ >>

セルと一緒に消えます

0
    Excel 2007では、オートシェイプなどのオブジェクトが一新されました。この新しい描画エンジンはかなりの優れモノで、開発当初から「今度のシェイプはすごいよ!」という声を何度となく開発チームから聞いていました。確かにデザインも綺麗だし、文字の加工も強力だし、Excelの表現力がますますアップすること間違いありません。中でも感心したのは、セルを削除したときに隠れてしまうという不具合が解消されたことです。

    まずExcel 2003での挙動をお見せしましょう。シート上に任意のオートシェイプを配置します。



    オートシェイプをすべて含むように列全体を選択して削除します。



    実行するとこうなります。オートシェイプはセルと一緒に削除されたように見えますが、行番号のあたりにマウスを合わせると、マウスポインタの形が変化します。これは、オートシェイプを選択して移動するときのマウスポインタです。



    試しにそのままシートの中にドラッグしてみると・・・削除されたはずのオートシェイプが現れました。



    実際には削除されていたのではなく、横幅が0になって、ワークシートの左端に移動しただけだったのです。ハンドルをドラッグして幅を広げると、ほら元に戻りました。



    ワークシート上に配置したオートシェイプは、下のセルと一緒に移動したり、セルの大きさに応じて縦横のサイズが自動的に変化したりします。そのことから、何となく「オートシェイプはセルと一体」というイメージを抱きやすいです。しかし、このイメージがくせ者。上でやったように、セルを削除すればその上に乗っているオートシェイプも削除されると勘違いしているユーザーが非常に多いです。こうして作成された見えないオートシェイプですが、実際は存在しているのですからブック内にデータとして保存されます。図形関係ですから、けっこうファイルサイズが大きくなります。ファイルサイズが大きくなると読み込み/保存に時間がかかるようになります。データの割にファイルサイズの肥大化しているブックがあったら、こうしたステルス・オートシェイプを疑ってください。

    さて、同じことをExcel 2007でやってみましょう。

    [挿入]タブの[図形]から任意の図形を配置します。同じように列全体を選択して[削除]を実行します。



    今度はどうでしょう。行番号あたりにマウスを移動してもマウスポインタは変化しません。



    でも、これだけでは信用できませんね。そこで次のようなマクロで存在を確認してみます。これは、アクティブシートにあるオートシェイプの個数を調べるマクロです。


    Sub test()
    MsgBox ActiveSheet.Shapes.Count
    End Sub




    どうやら間違いなく削除されたようです。

    コメント
    コメントする









    この記事のトラックバックURL
    トラックバック
    Topページへ戻る
    calendar
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
    << January 2017 >>
    selected entries
    categories
    archives
    recent comment
    recent trackback
    recommend
    recommend
    recommend
    recommend
    recommend
    links
    profile
    search this site.
    others
    mobile
    qrcode