• ベストアンサー

自作のツールバーに登録するマクロについて

Excel97, Windows98SEを使用しています。 「表示」-「ツールバー」-「ユーザー設定」の「ツールバー」タブ「新規作成」で、「stamp」という名前のツールバーを作成しました。 このツールバーのコマンドボタンにマクロを登録して使いたいのですが、  Macro1:コマンドボタンAをクリックすると図aをコピーして貼りつける  Macro2:コマンドボタンBをクリックすると図bをコピーして貼りつける  Macro3:コマンドボタンCをクリックすると図cをコピーして貼りつける  … という風に殆ど同じ作業ですので、これをひとつのマクロにまとめたいのですが、そういう事は可能でしょうか? たとえばSelect Caseを使って、  押したボタンがコマンドボタンAの場合、図aをコピーして貼りつける  押したボタンがコマンドボタンBの場合、図bをコピーして貼りつける のように記述できたら、と思っているのですが、 「押したボタンがコマンドボタンAの場合」のコードがわかりません。 ご存知の方、どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

こういう場合、まとめたい処理をサブルーチン化してしまいます。 Sub Macro1  Call Copy_Paste("図a") End Sub Sub Macro2  Call Copy_Paste("図b") End Sub Sub Macro3  Call Copy_Paste("図c") End Sub ' 指定されたzuの名前の図をコピーして貼り付ける処理。 Sub Copy_Paste(zu as string)  ○○(zu).Copy  Paste End Sub など。 -- > 「押したボタンがコマンドボタンAの場合」のコード WindowsやExcelのVBAがいわゆるイベントドリブンの動作をしますので、ボタンを押した際に既定のマクロが実行される以上の情報を得ようとすると、標準では難しいです。 a、b、cのラジオボタンを持っておいて「実行」ボタンで実行とかですと、ラジオボタンの値を取得すればよいのですが。

takahiro_
質問者

お礼

ご回答どうもありがとうございます。 押したボタンのCaptionを取得してそれと同じ名前の図を挿入する、など色々考えていたのですが、それは難しいのですね…。 教えていただきましたように、サブルーチンを作成して対応したいと思います。 またわからない事がありましたらよろしくお願いいたします。

その他の回答 (1)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

標準モジュールに下のようなコードを書いておきます。 引数を使って共通サブルーチンを呼び出します。 新規のユーザー設定ツールバーにコマンドボタンA、B、Cが登録されているとします。 マクロの登録は、  →ユーザー設定ダイアログを表示する  →ツールバー「stamp」を表示する  →ツールバー「stamp」のコマンドボタンAを右クリック  →マクロの登録  →CopyPasteA を選択して『OK』  →コマンドボタンB、コマンドボタンC に対して同様に設定する '// 図aをコピー Sub CopyPasteA()   Call CopyPaste("図a") End Sub '// 図bをコピー Sub CopyPasteB()   Call CopyPaste("図b") End Sub '// 図cをコピー Sub CopyPasteC()   Call CopyPaste("図c") End Sub '// 図をコピーする(共通) Sub CopyPaste(ByVal Kind As String)   On Error GoTo ErrorHandler   ActiveSheet.Shapes(Kind).Copy   ActiveSheet.Paste   ActiveCell.Select   Exit Sub ErrorHandler: End Sub

takahiro_
質問者

お礼

ご回答どうもありがとうございます。 押したボタンのCaptionを取得してそれと同じ名前の図を挿入する、など色々考えていたのですが、それは難しいのですね…。 教えていただきましたように、サブルーチンを作成して対応したいと思います。 またわからない事がありましたらよろしくお願いいたします。

関連するQ&A