- ベストアンサー
※ 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
- みんなの回答 (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がないもので何も確かめていません。完全に机上デバッグです。 うまくいけばいいですね。
お礼
うまくいきました! ありがとうございました。