
No.1ベストアンサー
- 回答日時:
こんばんは、
参考になるか分かりませんが、サンプルです。
Sub ShapeResize()
Dim shp As Shape
Dim shpCell As Range
For Each shp In ActiveSheet.Shapes
With shp
Set shpCell = .TopLeftCell
.LockAspectRatio = msoTrue
.Height = shpCell.Height * 0.9
If .Width > shpCell.Width Then
.Width = shpCell.Width * 0.9
End If
.Left = shpCell.Left + (shpCell.Width - .Width) / 2
.Top = shpCell.Top + (shpCell.Height - .Height) / 2
End With
Set shpCell = Nothing
Next shp
End Sub
・シート上の画像全てがリサイズできる
For Each shp In ActiveSheet.Shapes
・縦横比は維持する
.LockAspectRatio = msoTrue
・画像の左上端がおさまっているセルの大きさに対して
Set shpCell = .TopLeftCell 'セルをセット
上下左右わずかに余白が生じるサイズにし、
.Height = shpCell.Height * 0.9
If .Width > shpCell.Width Then
.Width = shpCell.Width * 0.9
End If
*Shapeの大きさとセルの大きさが分からないのと比を維持する為に
セルの幅、高さの小さい方に合わせてリサイズしリサイズされた
ShapeがshpCell.Widthに収まっていない場合は、
更にshpCell.Widthでリサイズしています。
セルの中心におさめる
.Left = shpCell.Left + (shpCell.Width - .Width) / 2
.Top = shpCell.Top + (shpCell.Height - .Height) / 2
ありがとうございます!
まさに実現したい動きをしてくれるもので本当に助かりました!
それぞれのコードの働きも書いてくださったので
アレンジしたパターンが必要になった時には参考にさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【VBA】写真の縦横比を変えずに貼り付ける
Visual Basic(VBA)
-
エクセル(2013)VBA-図の縦横比を変えずにセルにおさまる最大限の大きさにする
Excel(エクセル)
-
エクセルVBA 画像を貼り付けるセル位置を指定する方法
Excel(エクセル)
-
-
4
エクセルマクロでシート内にある画像のみを選択する
Excel(エクセル)
-
5
VBAエクセルに貼り付けた画像をセルにあった大きさにしたい(等倍)
Excel(エクセル)
-
6
Excel 画像貼り付けのVBAについて
Excel(エクセル)
-
7
Excel VBAでセル内の画像を選択したい
Excel(エクセル)
-
8
エクセル 画像のプロパティで縦横比を固定する。 これをVBAでコードにできますか? 知ってる方おられ
Visual Basic(VBA)
-
9
VBAで特定のセルに画像があれば削除、なければ貼り付けを行いたい
Excel(エクセル)
-
10
VBAでセルを指定した画像のコピー&ペーストを繰り返したい
Excel(エクセル)
-
11
エクセルVBAで縦向きの画像の挿入・回転
Excel(エクセル)
-
12
画像を削除したい(VBA)
Word(ワード)
-
13
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
14
マクロを実行すると画像がズレてしまいます
その他(Microsoft Office)
-
15
【EXCEL VBA】ダブルクリックでセルのサイズに合わせて画像を挿入に機能を追加したいです。
Visual Basic(VBA)
-
16
EXCELに画像を貼り付けマクロの画像大きさ調整にについて教えてください。
その他(Microsoft Office)
-
17
【VBA】写真の貼り付けコードがうまく機能しません。
Visual Basic(VBA)
-
18
エクセルに画像を貼付け縮小する作業をマクロにしたいのですが、
Excel(エクセル)
-
19
VBA Shapes コピーと名前
Excel(エクセル)
-
20
VBA セルに合わせて移動するが、サイズ変更はしない
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelについての質問です 並べ...
-
貼り付けで複数セルに貼り付けたい
-
セルをクリック⇒そのセルに入力...
-
数式を残したまま、別のセルに...
-
エクセルの一つのセルに複数の...
-
エクセルで指定したセルのどれ...
-
枠に収まらない文字を非表示に...
-
Excel 例A(1+9) のように番地の...
-
Excelで数式内の文字色を一部だ...
-
エクセルのセルの枠を超えて文...
-
EXCEL VBA セルに既に入...
-
エクセル 足して割る
-
対象セル内(複数)が埋まった...
-
(Excel)数字記入セルの数値の後...
-
Excelでのコメント表示位置
-
excelの特定のセルの隣のセル指...
-
エクセルvba (ByVal Targ...
-
エクセル オートフィルタで絞...
-
Excel累積が規定数を超えたらま...
-
Excelの関数で、性別が男なら『...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
excelの特定のセルの隣のセル指...
-
枠に収まらない文字を非表示に...
-
エクセルの書式設定の表示形式...
-
数式を残したまま、別のセルに...
-
【エクセル】IF関数 Aまたは...
-
セルをクリック⇒そのセルに入力...
-
(Excel)数字記入セルの数値の後...
-
Excelで、「特定のセル」に入力...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
EXCEL VBA セルに既に入...
-
エクセルの一つのセルに複数の...
-
【Excel】 セルの色での判断は...
-
Excelで数式内の文字色を一部だ...
-
エクセルのセルの枠を超えて文...
-
エクセル オートフィルタで絞...
-
Excelでのコメント表示位置
-
連続しないセルから最小値を引...
おすすめ情報