[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『指定したセルのみ、画像挿入したい』(もじょ)
以下のコードを使用することでセル内(結合含む)をダブルクリックすると比率維持した画像が挿入できました。
しかし、これだと全てのセルに適用されてしまい困っています。
例えばA1だけに適用させたいです。
どこにどのコードを入れれば良いか教えてほしいです。
ちなみにエクセルは素人で、マクロを使用したのは今回が初めてです。。。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim myF As Variant Dim mySp As Object Dim myAD1 As String Dim myAD2 As String Dim myHH As Double Dim myWW As Double Dim myHH2 As Double Dim myWW2 As Double 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.Shapes.AddPicture(Filename:=myF, LinkToFile:=False, _ SaveWithDocument:=True, Left:=Target.Left, Top:=Target.Top, _ Width:=0, Height:=0) '★ とりあえず 縦横0で。
'範囲内で最大になるように加工 With mySp Set r = .TopLeftCell.MergeArea If r.Width / .Width < r.Height / .Height Then d = Application.WorksheetFunction.RoundDown(r.Width / .Width, 2) Else d = Application.WorksheetFunction.RoundDown(r.Height / .Height, 2) End If .ScaleWidth d, msoFalse, msoScaleFromTopLeft .ScaleHeight d, msoFalse, msoScaleFromTopLeft .Left = r.Left + r.Width / 2 - .Width / 2 .Top = r.Top + r.Height / 2 - .Height / 2 End With '===============タテヨコの縮尺を保持 If mySp.Width > Target.Width Then mySp.Width = Target.Width If mySp.Height > Target.Height Then mySp.Height = Target.Height '===============中央へ調整 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
< 使用 Excel:Excel2007、使用 OS:Windows10 >
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.