Excel2010においてユーザー定義関数より Shape オブジェクトの削除および追加を行った後、セル内の数式を削除し、元に戻す操作(CTRL+Z)を行うと、行または列の挿入時にエラー メッセージ "オブジェクトがシートからはみだします。その操作はできません" が表示されます。
環境
Windows8 64bit
Excel2010 32bit
IE10
事象が発生するユーザー定義関数
Public Function Test()
Dim ws As Worksheet
Dim shp As Shape
Set ws = ActiveSheet
For Each shp In ws.Shapes
shp.Delete
Next
With ws.Shapes.AddPicture( _
"C:\image.bmp", msoFalse, msoTrue, ws.Range("B1").Left, ws.Range("B1").Top, 0, 0)
.ScaleHeight 1, msoTrue
.ScaleWidth 1, msoTrue
.Placement = xlMove
End With
End Function
再現方法
1.セル A1 に =Test() を入力します。(セル B1 に 画像が表示されます。)
2.セル A1 を選択し Delete キーにより数式を削除します。
3.CTRL+Z を押し、削除した数式を復元します。
4.任意の行または列を選択し、コンテキストメニューより 挿入 操作を行います。
上記操作で、エラーメッセージ "オブジェクトがシートからはみだします。その操作はできません" が表示されます。
対応
http://support.microsoft.com/kb/211769/ja に示されている解決方法をすべて試しましたが解決しませんでした。
エラーが発生した場合、一度ブックを上書き保存し、閉じて開き直すと問題なく行または列の挿入が可能となることを確認しました。
上記コードの .Placement = xlMove を .Placement = xlMoveAndSize に変更するとエラーが発生しないことを確認しました。
Excel2013ではエラーが発生しないことを確認しました。
図形サイズを固定したいため、Shapeオブジェクトの Placement プロパティを xlMove のまま使用したいのですが、問題なく動作させるにはどのようにすればよいでしょうか。