電子書籍の厳選無料作品が豊富!

マクロ 初心者です。

ワークシート指定して、ダブルクリック等を使っての画像選択、貼り付け&セルの大きさに合わせる)ことはできるのですが、
ダブルクリック等ではなく、手動でマクロを実行して指定のセル(B37)に貼り付けることはできるでしょうか?(セルの大きさに画像が変換するのは生かしたまま)

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)を
sub マクロ名()にして、Moduleに貼り付けて実行したら
myAD2 = Target.Address
上記場所でエラーになってしまいます。
どのように変更したら、できるでしょうか?または、できる手段はないのでしょうか?
ご教授お願いします。

使用ベースマクロは以下です。


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As 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件)

やり方は色々ありますが、一番簡単なのはTargetにセルを設定すれば良いです。



sub マクロ名()
Set Target = Range("B37")
===============画像選択
myF = Application.GetOpenFilename _
     :

ご確認ください。
    • good
    • 0
この回答へのお礼

できました。
ありがとうございます。

お礼日時:2011/06/13 08:58

Target.Address,


Target.Width
などのTargetのセルはイベントの場合はシステムから渡してくれていたのだが、
それを使わないなら、自分でセットしないとならない。
クリックしたセルの番地等を知りたいなら、またイベントのお世話になる
ことになりSubにした意味が少なくなる。
横に2列で、縦に5列の写真を位置づけるような場合は
自分でその十個のセルを順次指定するようにプログラムを
組まないとならない。
どういう構成にしようとしているのか、1つなのか
書いてなくて答えようがない。
まだ質問者には難しすぎる課題かなと思う。
    • good
    • 0
この回答へのお礼

特定のセルの大きさ(この場合はB37のみの1セル)にあわせて画像を貼り付ける作業をしたかったのです。
私が、自分で記録させる程度でしかマクロ使えない知識なので、難しそうですね。
ありがとうございました。

お礼日時:2011/06/13 08:53

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