ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

Excelに画像を貼り付けたときに縮小するマクロ

となりの人が欲しいというので、
昔後輩がやってたなあと思いつつ作ってみた。

Sub reduceImage()
    REDUCE_RATE = 0.75

    ' 貼り付け
    ActiveSheet.Paste
    Selection.ShapeRange.LockAspectRatio = msoTrue

    ' 縮小
    Selection.ShapeRange.Height = Selection.ShapeRange.Height * REDUCE_RATE
    Selection.ShapeRange.Width = Selection.ShapeRange.Width * REDUCE_RATE
End Sub

ってやって、ツール → マクロ → マクロのオプション(Excel2003の場合って書かないとダメか)で、Ctrl + qとかに割り当てて、
画像をコピーしてから、Ctrl + qで貼り付けってやると、
縮小して表示されます。


ってはずだったのだが、なんか75%にしたつもりが、56%になってしまう。
なぜだか式の右辺が2回評価されている(?)ような雰囲気。

Sub reduceImage()
    REDUCE_RATE = 0.75

    ' 貼り付け
    ActiveSheet.Paste
    Selection.ShapeRange.LockAspectRatio = msoTrue

    ' 縮小
    targetHeight = Selection.ShapeRange.Height * REDUCE_RATE
    targetWidth = Selection.ShapeRange.Width * REDUCE_RATE
    Selection.ShapeRange.Height = targetHeight
    Selection.ShapeRange.Width = targetWidth
End Sub

っていう風に、一回変数に代入したらできた。