2012年09月24日
[excel][vba] 一括でシェイプの「セルに合わせて移動やサイズを変更しない」「する」を変更する 印刷時のずれをなくす
Excelさん最大のバグ
印刷するとオートシェイプがずれる、はみ出る、文字が欠ける・・・。
印刷どころか表示倍率を変えただけでずれるし。
マイクロSさんにとってWYSWYGってなに? バカなの?
原因はオートシェイプのひどい日本語のプロパティということ
「セルに合わせて移動やサイズを変更しない」←何語??
これが何なのかは↓を見てもらうのが早いかと。
プロパティが異なるふたつのシェイプを用意。
ここで色の付いたB列の幅を広げると・・・
つまり、印刷時は「セルに合わせて移動やサイズを変更しない」にするべきなのです。
デフォルトが「する」だからいけないのです。
そんなわけで、行を追加するときなんかにもけっこう頻繁に使うマクロです。
シート内のシェイプ全部に対して掛けちゃいます。
個別に指定することはまずないので、これで十分便利です。
印刷するときに怪しいなと思ったら、必ずこれを実行してから印刷するようにしてます。
印刷するとオートシェイプがずれる、はみ出る、文字が欠ける・・・。
印刷どころか表示倍率を変えただけでずれるし。
マイクロSさんにとってWYSWYGってなに? バカなの?
原因はオートシェイプのひどい日本語のプロパティということ
「セルに合わせて移動やサイズを変更しない」←何語??
これが何なのかは↓を見てもらうのが早いかと。
プロパティが異なるふたつのシェイプを用意。
ここで色の付いたB列の幅を広げると・・・
つまり、印刷時は「セルに合わせて移動やサイズを変更しない」にするべきなのです。
デフォルトが「する」だからいけないのです。
そんなわけで、行を追加するときなんかにもけっこう頻繁に使うマクロです。
シート内のシェイプ全部に対して掛けちゃいます。
個別に指定することはまずないので、これで十分便利です。
印刷するときに怪しいなと思ったら、必ずこれを実行してから印刷するようにしてます。
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/数式
at
01:03
│
Comments(
0)
│
TrackBack(
0)
│