Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


32037 / 76734 ←次へ | 前へ→

【49936】Re:マクロ式の簡略化
回答  bykin  - 07/6/28(木) 23:16 -

引用なし
パスワード
   こんばんわ。

何か最近似たようなご質問が多いけど・・・(^^;;
こういうときにこそ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でちゃんと宣言してから使うことをお勧めします。

試してみてな。
ほな。

5 hits

【49926】マクロ式の簡略化 yayo 07/6/28(木) 18:22 質問
【49936】Re:マクロ式の簡略化 bykin 07/6/28(木) 23:16 回答
【49941】Re:マクロ式の簡略化 yayo 07/6/29(金) 16:05 質問
【49942】Re:マクロ式の簡略化 Jaka 07/6/29(金) 17:29 発言
【49944】Re:マクロ式の簡略化 bykin 07/6/29(金) 21:55 回答
【50001】Re:マクロ式の簡略化 yayo 07/7/3(火) 10:35 お礼

32037 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free