• ベストアンサー

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

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

  • マクロの登録

    表示>ツールバー>コントロールボックス からコマンドボタンっていうのを作成したのですがそのボタンにマクロを登録する事は出来ないのですか? ダブルクリックすると Private Sub CommandButton1_Click() End Sub というのが作成されてしまいますがここから何かしなくてはいけないのですか? コマンドボタンを右クリックしても「マクロの登録」っていう項目がなくて困っています わかりやすく解説していただけたらありがたいです。

  • エクセルでマクロ登録の不具合解消

    エクセルでマクロを作成し 「ツール」→「マクロ」→「実行」 を行うとうまくのですが コマンドボタンを配置して Click イベントに 同じマクロ文を登録してボタンを押すと Cells.Select でエラーが出ます 「実行時エラー '1004'; Range クラスの Select メソッドが失敗しました」 コマンドボタンにマクロを登録する場合 設定か何かあるのでしょうか 誰か 教えてください

  • PCのマクロについて

    Sub Macro1() ' ' Macro1 Macro ' ' ActiveCell.FormulaR1C1 = "○" Range("F5").Select End Sub Sub Macro2() ' ' Macro2 Macro ' ' ActiveCell.FormulaR1C1 = "●" Range("F5").Select End Sub こんな感じでマクロ入れたんですが図でわかると思うのですが4段目で確認未のボタンを押すと1段目のセルに選択が移動してしまいます。ボタンを押した際に最初に選択したセルから移動しないようにするにはどうすればよいですか?

  • ■ エクセルマクロについてです。初級?

    エクセルのマクロでデスクトップにあるエクセルファイルを開くにはどうしたらいいのでしょうか? 現在は、エクセルファイルA.xls B.xlsという2つを開いていて、マクロを実行することができるのですが、これをA.xlsだけ開いている上体で、実行したいのです。 なので、デスクトップに置いてあるB.xlsファイルを開くコマンド?というか、関数が知りたいのですが、どうしたらいいのでしょうか? 現在はこのような感じになっております。 Sub Macro2() ' ' Macro2 Macro ' マクロ記録日 : 2008/9/10 ユーザー名 : ' ' ActiveCell.FormulaR1C1 = "12345" Range("G17").Select ActiveCell.FormulaR1C1 = "129876" Range("G18").Select Windows("B.xls").Activate Range("N16").Select ActiveCell.FormulaR1C1 = "8/4/2008" Range("N17").Select ActiveWorkbook.Save Range("O16").Select ActiveWorkbook.Save ActiveWindow.Close End Sub

  • EXCEL 添付したツールバーに登録したマクロのパスについて

    Excel2003を使っています。 「表示メニュー」-「ツールバー」-「ユーザー設定」より新しいツールバーを作成しました。マクロのボタンが1つ作ってあり、同じファイル内のマクロが登録してあります。 このファイルをCドライブのマイドキュメントに保存しました。 この後、このファイルをDドライブに移動してみると、マクロのボタンが正しく動作しません。調べてみると、登録したマクロのパスがCドライブのままになっています。 ツールバーのボタンは常に同じファイル内の syori_1 を実行するようにしたいのですが、どのようにしたら良いのでしょうか? どうぞご教授ください。

  • エクセル マクロについて

    Book1で入力データ作成し、保存次第、添付画像の黄色部分に、自動転記する様マクロを組みたいと考えています。 現在、勉強中で、簡単な下記の様なマクロはできました。 これを応用して実践してみたいのですが、何を加えればよいのか、アドバイス頂けたら幸いです。 --------- Sub Macro1() ' ' Macro1 Macro ' ' a = ActiveCell.Value Range("A2").Select ChDir "C:\Users\takana\Desktop" Workbooks.Open Filename:="C:\Users\takana\Desktop\転記.xlsx" Sheets("Sheet2").Select ActiveCell.FormulaR1C1 = "" Range("B2").Select ActiveCell.FormulaR1C1 = a Range("B3").Select End Sub -----------

  • エクセルでマクロ登録ができなくりました。

    エクセルで「コマンドボタン」にマクロを登録したいのですができなくりました。 なにか問題があるのでしょうか? 以前作成したものでは「コマンドボタン」に「矢印」を持っていき、左クリックすると「マクロの登録」を選択できたのですが、今、新たにコマンドボタンを作成して左クリックをしたら「マクロの登録」がなくなっていました。 (別のファイルを開いてやってみてもダメでした。) どこに問題があるのかご存知の方いましたら教えてください。 よろしくお願いいたします。

  • エクセルで作成したマクロ機能のツールバーのコピーができません

    エクセルで表と共に、マクロ機能のツールバーを作成し、 これをコピーしてペイントに貼り付けたいのですが 表はコピーできても、マクロ機能のツールバー(ボタン)が 逃げてしまってコピーできません。 どうしたらツールバーを含めた表をコピーできるでしょうか。

  • エクセル2007マクロ シート間のセルコピー

    [Sheet1]にあるデータを[Sheet2]にコピーするマクロボタンを[Sheet2]に作りたいのですが、マクロがよく分からないので、「マクロの記録」で作成してみました。 Sub siken() ' ' siken Macro ' ' Sheets("Sheet1").Select Range("A1").Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B3").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B3").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B6:D6").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B6").Select ActiveSheet.Paste End Sub (実際はもっと多くのセルをコピーします) マクロを実行すると、ちゃんとコピーできるのですが、セルをコピーする都度[Sheet1]と[Sheet2]が交互に表示されます。 コピー元の[Sheet1]を表示させずにマクロを実行させるにはどのようにしたらよいのでしょうか? よろしくお願いします。

  • マクロ 検索について

    こんにちは。マクロでの質問ですが、 【大学名リスト】というシートで作成したリストから検索してきたものを【検索ボタン】というシートのセルにコピペするマクロをボタンに登録しました。何度押しても検索してくれてしまうのですが、このボタンに登録したのは1回だけ実行して、もう一つのマクロで次を検索してくれるように作りたいのですが… Sub Macro1() ' ' Macro1 Macro ' ' Sheets("A.【大学名リスト】").Select Cells.Find(What:=Sheets("B.【検索ボタン】").Range("C8"), After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate Selection.Copy Sheets("B.【検索ボタン】").Select Range("E8").Select ActiveSheet.Paste End Sub 数値の検索だと1回だけで止まってくれるのですが、数式にすると何回も可能になってしまうのはなぜなのでしょうか。 あと、実行すると【大学名リスト】のシートで作成したリストから、【検索ボタン】のシートのあるセルにキーワードを入力すると、隣のセルに5つの候補を表示させるマクロも教えていただきたいです。

専門家に質問してみよう