• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル マクロ)

エクセルマクロ:特定のセルをダブルクリックすると画像ファイルを参照し、そのセルの大きさに合わせて画像を貼りつける方法

このQ&Aのポイント
  • Excelのマクロを使用して、特定のセルをダブルクリックすると画像ファイルを参照し、そのセルの大きさに合わせて画像を貼りつける方法について教えてください。
  • Excel2003からExcel2007に変更すると、画像ファイルの貼りつく位置がダブルクリックしたセルではない所に貼りつくようになりました。どこを変更すればよいでしょうか?
  • Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range('特定のセル)) Is Nothing Then Exit Sub Cancel = True Dim myPic Dim myRange As Range Dim rX As Double, rY As Double myPic = Application.GetOpenFilename('画像ファイル,*.jpg;*.jpeg;*.gif;*.tif') If VarType(myPic) = vbBoolean Then Exit Sub Set myRange = Target Application.ScreenUpdating = False With ActiveSheet.Pictures.Insert(myPic).ShapeRange rX = myRange.Width / .Width rY = myRange.Height / .Height If rX > rY Then .Height = .Height * rY Else .Width = .Width * rX End If .Left = .Left + (myRange.Width - .Width) / 2 .Top = .Top + (myRange.Height - .Height) / 2 End With Application.ScreenUpdating = True Cancel = True End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

>Excel2003からExcel2007へ変更すると画像ファイルの貼りつく位置がダブルクリックしたセルではない所に貼りつくようになりました 最後の方の End If   .Left = .Left + (myRange.Width - .Width) / 2   .Top = .Top + (myRange.Height - .Height) / 2 End With を、   .Left = myRange.Left + (myRange.Width - .Width) / 2   .Top = myRange.Top + (myRange.Height - .Height) / 2 にしたらどうなりますか。2007は何か仕様が違っていたような気がします。 Excel2007がないもので何も確かめていません。完全に机上デバッグです。 うまくいけばいいですね。

noname#225437
質問者

お礼

うまくいきました! ありがとうございました。

関連するQ&A

専門家に質問してみよう