プロが教えるわが家の防犯対策術!

いつもお世話になっております。

下記のVBAコードを使わせて頂き、自分で作成したエクセルにセルに合わせて自動で画像データを添付するようにしたいのですが。
(1)タテヨコの縮尺を保持⇒セルに合わせて縦横の変倍を行う
(2)又は、貼付部のセルのサイズは決まっているのでサイズを指定して貼り付ける
となるように修正したいのですが、なにぶんVBAは初心者なもので、全くわかりません。
どなたかご指導を宜しくお願い致します。


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)

Cancel = True

'===============画像選択
myF = Application.GetOpenFilename _
("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "画像の選択", , False)
If myF = False Then
MsgBox "画像を選択してください(終了)"
Exit Sub
End If

'===============画像の掃除
For Each mySP In ActiveSheet.Shapes
myAD1 = mySP.TopLeftCell.MergeArea.Address
myAD2 = Target.Address
If myAD1 = myAD2 Then mySP.Delete
Next

'===============画像の貼り付け
Set mySP = ActiveSheet.Pictures.Insert(myF)

'===============タテヨコの縮尺を保持
myHH = Target.Height / mySP.Height
myWW = Target.Width / mySP.Width
If myHH > myWW Then
mySP.Height = mySP.Height * myWW
mySP.Width = Target.Width
Else
mySP.Height = Target.Height
mySP.Width = mySP.Width * myHH
End If

'===============中央へ調整
myHH2 = (Target.Height / 2) - (mySP.Height / 2)
myWW2 = (Target.Width / 2) - (mySP.Width / 2)
mySP.Top = Target.Top + myHH2
mySP.Left = Target.Left + myWW2

Set mySP = Nothing

End Sub

A 回答 (2件)

画像の縦・横はそれぞれ



mySP.Height、mySP.Width

セルの縦・横はそれぞれ

Target.Height、Target.Width

なのでそのまま設定すれば

セルの大きさと同じ画像となります。


mySP.Height = Target.Height

mySP.Width = Target.Width

同様に位置は

mySP.Top = Target.Top

mySP.Left = Target.Left

これでどうでしょう。
    • good
    • 0

先日同類の質問がありましたので以下を参考にして下さい。



http://questionbox.jp.msn.com/qa7704293.html
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2013/06/18 21:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!