|
こんばんわ。
何か最近似たようなご質問が多いけど・・・(^^;;
こういうときにこそApplication.Callerを使うんです。
【1】準備
各ボタンの名前を次のように変更しておきます。
2行目のボタン:ボタン 1
15行目のボタン:ボタン 2
28行目のボタン:ボタン 3
・
・
262行目のボタン:ボタン 21
※上記例は一応デフォルトの名前に合わせてあります。
【2】マクロコード(標準モジュール)
Public Sub InsertPicture()
Dim fName As Variant
Dim PicTop As Single
Dim PicLeft As Single
fName = Application.GetOpenFilename _
("画像ファイル,*.gif;*.jpg;*.bmp", 1, "画像挿入")
If fName = False Then
Exit Sub
End If
Application.ScreenUpdating = False
'↓クリックしたボタンの名前の5文字目以降の数値を取り出して
'↓挿入位置を計算している
With Cells((Val(Mid$(Application.Caller, 5)) - 1) * 13 + 2, 2)
PicTop = .Top
PicLeft = .Left
End With
With ActiveSheet.Pictures.Insert(fName)
.Top = PicTop
.Left = PicLeft
.Height = 234#
.Width = 312#
End With
Application.ScreenUpdating = True
End Sub
【3】該当ボタン全部を選択して上記マクロを登録します。
こうすれば、1個のプロシージャで全てまかなえます。
※変数はDimでちゃんと宣言してから使うことをお勧めします。
試してみてな。
ほな。
|
|