2012年09月24日

[excel][vba] 一括でシェイプの「セルに合わせて移動やサイズを変更しない」「する」を変更する 印刷時のずれをなくすこのエントリーをはてなブックマークに追加

Excelさん最大のバグ

印刷するとオートシェイプがずれる、はみ出る、文字が欠ける・・・。

印刷どころか表示倍率を変えただけでずれるし。
マイクロSさんにとってWYSWYGってなに? バカなの?
原因はオートシェイプのひどい日本語のプロパティということ

「セルに合わせて移動やサイズを変更しない」←何語??

これが何なのかは↓を見てもらうのが早いかと。
プロパティが異なるふたつのシェイプを用意。

56)
ここで色の付いたB列の幅を広げると・・・ar3
05)

つまり、印刷時は「セルに合わせて移動やサイズを変更しない」にするべきなのです。
デフォルトが「する」だからいけないのです。

そんなわけで、行を追加するときなんかにもけっこう頻繁に使うマクロです。
シート内のシェイプ全部に対して掛けちゃいます。
個別に指定することはまずないので、これで十分便利です。

印刷するときに怪しいなと思ったら、必ずこれを実行してから印刷するようにしてます。

Sub セルに合わせて移動やサイズを変更しない()

With ActiveWorkbook.ActiveSheet

Dim AllShapes As Shapes
Dim CurShape As Shape
Set AllShapes = .Shapes


For Each CurShape In AllShapes
CurShape.Placement = xlFreeFloating
Next

End With 'activeworkbook,activesheet

End Sub



Sub セルに合わせて移動やサイズを変更する()

With ActiveWorkbook.ActiveSheet

Dim AllShapes As Shapes
Dim CurShape As Shape
Set AllShapes = .Shapes


For Each CurShape In AllShapes
CurShape.Placement = xlMoveAndSize
Next

End With 'activeworkbook,activesheet

End Sub




これに関連した記事→│ excel/vba/数式  
 

この記事へのトラックバックURL