- ベストアンサー
自作のツールバーに登録するマクロについて
Excel97, Windows98SEを使用しています。 「表示」-「ツールバー」-「ユーザー設定」の「ツールバー」タブ「新規作成」で、「stamp」という名前のツールバーを作成しました。 このツールバーのコマンドボタンにマクロを登録して使いたいのですが、 Macro1:コマンドボタンAをクリックすると図aをコピーして貼りつける Macro2:コマンドボタンBをクリックすると図bをコピーして貼りつける Macro3:コマンドボタンCをクリックすると図cをコピーして貼りつける … という風に殆ど同じ作業ですので、これをひとつのマクロにまとめたいのですが、そういう事は可能でしょうか? たとえばSelect Caseを使って、 押したボタンがコマンドボタンAの場合、図aをコピーして貼りつける 押したボタンがコマンドボタンBの場合、図bをコピーして貼りつける のように記述できたら、と思っているのですが、 「押したボタンがコマンドボタンAの場合」のコードがわかりません。 ご存知の方、どうぞよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こういう場合、まとめたい処理をサブルーチン化してしまいます。 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のラジオボタンを持っておいて「実行」ボタンで実行とかですと、ラジオボタンの値を取得すればよいのですが。
その他の回答 (1)
- nishi6
- ベストアンサー率67% (869/1280)
標準モジュールに下のようなコードを書いておきます。 引数を使って共通サブルーチンを呼び出します。 新規のユーザー設定ツールバーにコマンドボタン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
お礼
ご回答どうもありがとうございます。 押したボタンのCaptionを取得してそれと同じ名前の図を挿入する、など色々考えていたのですが、それは難しいのですね…。 教えていただきましたように、サブルーチンを作成して対応したいと思います。 またわからない事がありましたらよろしくお願いいたします。
お礼
ご回答どうもありがとうございます。 押したボタンのCaptionを取得してそれと同じ名前の図を挿入する、など色々考えていたのですが、それは難しいのですね…。 教えていただきましたように、サブルーチンを作成して対応したいと思います。 またわからない事がありましたらよろしくお願いいたします。