質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

36992閲覧

VBA 画像のセル内中央挿入

ttt1212

総合スコア16

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2015/04/20 13:48

画像挿入を 指定セル内&中央揃え にしたいです。

こちらのコードでセル内の左揃えになります。
こちらを中央揃えにするにはどうすればよいのでしょう。
教えていただけたら幸いです。よろしくお願いいたします。

lang

1 Dim shape As shape 2 shape.ScaleHeight 1, msoTrue 3 shape.ScaleWidth 1, msoTrue 4 shape.LockAspectRatio = msoTrue 5 shape.Height = ActiveCell.Height - 5 6 7 Set shape = Nothing 8End Sub 9

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。
画像の比率によってセルをはみ出るケースがあると思います。その場合の中央寄せはどのように考えていますか。
以下に、選択したセルに収まるよう画像調整し、TopもLeftもセル中央寄せにする例を挙げますので改造してください。

lang

1Sub hoge() 2 '画像読み込み 3 Dim shape As shape 4 Set shape = ActiveSheet.Shapes.AddPicture( _ 5 Filename:="C:\temp\hoge.jpg", _ 6 LinkToFile:=False, _ 7 SaveWithDocument:=True, _ 8 Left:=0, _ 9 Top:=0, _ 10 Width:=0, _ 11 Height:=0) 12 shape.ScaleHeight 1, msoTrue 13 shape.ScaleWidth 1, msoTrue 14 shape.LockAspectRatio = msoTrue 15 16 '選択セル内に中央揃え 17 Dim margin As Integer 18 margin = 10 19 With shape 20 .Left = ActiveCell.Left 21 .Top = ActiveCell.Top 22 'セル内に画像サイズ調整 23 .Height = ActiveCell.Height - margin 24 If .Width > ActiveCell.Width Then 25 .Width = ActiveCell.Width - margin 26 End If 27 '横を中央寄せ 28 .Left = .Left + (ActiveCell.Width - shape.Width) / 2 29 '縦を中央寄せ 30 .Top = .Top + (ActiveCell.Height - shape.Height) / 2 31 End With 32 33 Set shape = Nothing 34End Sub

ご希望の動作を実現する仕組みがVBAに用意されているのか存じませんので、単純に位置調整しただけです。万が一、プロパティやメソッド一発で出来たらすみません。

投稿2015/04/20 17:17

Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問