• ベストアンサー

【Excel】複数のマクロをまとめることはできますか?

Excel2003を使用していて、マクロを勉強しています。 先日、ここで質問させていただきながら、ある一覧表を作成するために マクロを作りました。 このマクロを実行してできた一覧表に、さらにこういう操作をしたい というのがいくつかでてきて、その度にマクロを作ったり マクロの記録を使用したりして、結局、この一覧表に関するマクロが 5つもできてしまいました。 そこで、質問なのですが、この5つのマクロをまとめることって できるのでしょうか?

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

  • ベストアンサー
noname#118337
noname#118337
回答No.2

できますよ。 例えば、マクロ名が「aaa」、「bbb」、「ccc」だった場合、 Sub Macro1() aaa bbb ccc End Sub というVBAを作ればその3つのマクロがまとめて実行されるマクロになります。 このマクロをボタンでも作って、押したら呼び出すように設定すれば更に便利になりますよ。

rx-z5815
質問者

お礼

教えていただいたとおりにしてみたところ、1つだけ実行されない マクロがあったのですが、No.3の方の方法も取り入れたところ 5つのマクロを実行するマクロができました。 ありがとうございました。

その他の回答 (2)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

物を見ないとなんともいえません。 あなたのやりたいことを整理して 「???をVBAでやりたいのですが、どうしたらいいか?」 というように質問しなおしてみては? #1,2の方の言うのの他に Sub AAA() (AAAの前処理) BBB (AAAの後処理) End Sub Sub BBB() (BBBの前処理) CCC (BBBの後処理) End Sub のような型式や Sub AAA() IF X = B Then BBB Else If X =C Then CCC END IF End Sub のようなのもあります。

rx-z5815
質問者

お礼

詳しく教えていただき、ありがとうございました。 おかげさまでうまくいきました!

回答No.1

マクロのソースを見ればまとめることもできるのですが、 基本的には5つのマクロを呼び出すマクロ(もしくは関数)を作ればいいだけですので、 それほど難しい作業でもないと思えます。

関連するQ&A

  • 【Excel】マクロでメッセージを表示する

    Excel2003を使用しています。 Aという名前の一覧表を作成するマクロがあります。 マクロAは『Sheet1』を選択した状態で正しく実行されますので、うっかり他のシートを選択した状態で、マクロAを実行してしまうと、一覧表が正しく作成されません。 こうなった場合、誤って作成された一覧表を消去して、もう一度やり直せば済むことなのですが、『Sheet1』を選択していない状態でマクロAを実行しようとすると、何かメッセージ(例えば、“Sheet1を選択後、実行してください”みたいな)が表示されるようにすることはできるでしょうか? 参考書にダイアログボックスにメッセージを表示させるマクロが載っていましたので、マクロAにそのようなコードを追加する(?)ことで可能かな??と思い、質問させていただきました。 よろしくお願いします。

  • EXCEL2000 マクロダイアログボックス

    よろしくお願いします。 先日EXCEL2000にてツール→マクロ→新しいマクロの記録からマクロを作成しました。その作っているときに表示されていたはずの”相対参照ボタンや記録終了”のダイアログボックス「みたいものがあると思います…」が、先日思わず×を押して閉じてしまいました。 それからです、ツール→マクロ→新しいマクロを開いても、もう二度と出てこなくなりました。 さていったいこのツールはどこへ行ったのでしょうか? どこかを押せば出てくるとは思うのですが、分かりません。 ひとつアドバイスをよろしくお願いいたします。

  • ある操作をすると実行するマクロ

    Excel2003を使用しています。 あるファイルにシート名の一覧を作成するマクロを作っています。 例えば、印刷プレビューを実行すると、このシート名の一覧を作成するマクロを実行するようにできるでしょうか? もし、できるのであれば、どのようにしたらいいのでしょうか?手元にある参考書には、そのようなものは記載されていなかったので… ちなみに、印刷プレビューでなく、他の操作だったらできるというときはそれでも構いません。よろしくお願いします。

  • Excel2002でマクロやVBAが使えない

    ファイルNO230881にExcel97で作ったマクロがExcel2000で使えないという質問がありましたが、私の場合Excel2000で作ったマクロがExcel2002で使えません。 ファイルNO230881の方は自動修復で直ったそうですが、自動修復のリストにExcel が乗ってきていないので困っています。 起きている症状は、 Excel2000で作成したマクロを、Excel2002で実行しようとしたら、***はマクロを含んでいますとメッセージが出て、マクロを有効にすると、オブジェクトライブラリは登録されていませんというメッセージが出てきたので、OKにし、もう一度マクロを有効にしたら、「***の修復   ***にエラーが検出されましたがMicrosoftExcelは次の修復を行うことによってファイルを開くことができました。修復を保持するにはこのファイルを保存してください。  VisualBasicプロジェクトが失われました。 ActiveXコントロールが失われました。」というエラーメッセージが出てきて、マクロがなくなってしまい、また新しくマクロを記録しようとしても、記録できません、というエラーメッセージが出てきてマクロが作れなくなってしまいました。 尚、セキュリティは中にしてありますが、低でもマクロの記録ができないです。なぜでしょう? VBAプロジェクトのライブラリファイル参照がうまくいっていないということはわかるんですが、VBエディタの[ツール]>[参照設定]がグレーで開くことができません。 みなさんのお知恵をお貸しください。

  • 【Excel】セル上にボタン

    Excel2003を使用しています。 以前、購入したExcel関係の書籍に添付されていたCD-ROMの中に入っていたソフトで、セル上にボタンが作ってあって、それをクリックするとある操作が実行されるようになっていました。 これは、マクロを使用することでできるのでしょうか? マクロを勉強中でして、ツールバーにはいくつかボタンを作っているのですが、セル上にボタンを作成する方法も知りたくて、質問させていただきました。よろしくお願いします。

  • EXCEL2002で作成したマクロをEXCEL97で使いたい

     EXCEL2002で作成したマクロを、急遽、EXCEL97でも使用する必要が出てきてしまいました。  そこで、構文や引数のEXCELバージョン別の対比一覧表のようなものがある参考書、又は、ホームページがありましたら、是非、教えて下さい。  EXCEL97で使用すると、実行時エラーが発生してしまい、うまく動作しません。(主にシート名の記述のあるあたりで止まる)    ソート部分では、引数の(DataOption1)という部分を削除することでうまく動作しました。  マクロそのものはそれほど高度なものはなく、主にブック内でのデータシートから別シートに転記を行なう程度です。(フィルタオプション・ソート・msgbox・inputbox・selct・if then あたりを使用しています )  何かヒントだけでもよいのでお願いします。

  • Excel2002のマクロについて教えてください

    フィルターオプションの自動化を試みたのですが・・・・ sheet「商品一覧」、sheet「抽出結果」 上記2つのSheetがあったとします。 抽出したい表は「商品一覧」、抽出結果を出したい表は「抽出結果」です。(マクロを実行するコマンドボタンは「商品一覧」に作成します) フィルターオプションは、結果を出したいシートから、操作を行えば、別シートにも、結果を出すことができるので、マクロの自動登録を使って、以下のようなマクロが作成できました。 ---------------------------------- Sheets("抽出結果").Select Sheets("商品一覧").Range("B5:G24").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("B3:B4"), CopyToRange:=Range("B7:G7"), Unique:=False ------------------------------------ もちろん、きちんと動作はするのですが、「商品一覧」の範囲が(B5:G24)が変動する場合があるので、以下のように変更をしました。 ------------------------------------ Dim Gyou As Integer Gyou = Worksheets("商品一覧").UsedRange.Rows.Count + Worksheets("商品一覧").UsedRange.Row - 1 Sheets("抽出結果").Select Sheets("商品一覧").Range(Cells(5, 2), Cells(Gyou, 7)).AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("B3:B4"), CopyToRange:=Range("B7:G7"), Unique:=False ----------------------------- しかし、上記の方法では、エラーが出てしまいます。 最初は、CurrentRegion を使用しようと思ったのですが、うまくいきませんでした。 マクロを勉強したばかりで、たぶんとんでもないものを作っているのだと思いますが、ご指摘いただければうれしいです。 よろしくお願いします。

  • EXCEL2000で作成したマクロが2002で実行できない。

    EXCEL2000で作成したマクロがEXCEL2002で実行できずに、 困っています。 ファイルは開けるのですが、マクロが実行できないのです。 セキュリティーレベルも低にしてもだめです。 どうすれば、2000で作成したマクロを2002で実行できるようになるでしょうか? よろしくお願いします。

  • Excel2010のマクロの記録について

    Windows 7でExcel2010を使用しています。 マクロの記録ボタンを押して、マクロの保存先を「個人用マクロブック」とすると 「起動フォルダーにある個人用マクロブックは、記録のために開かれた状態でなければなりません」 と出てきます。 色々検索をして調べてみました。 すると、ヘルプの中で「使用できないアイテム」を確認しましたか? という意見が圧倒的に多かったのですが、Excel2010のヘルプにはそんな物はありませんでした。 そこで、Alt+F11でVBAをあけてみて、左側のプロジェクト一覧を見たら、 atpvban.xls(ATPVBAEN.XLAM) VBAProject(Book1) VBAProject(FUNCRES.XLAM) があり、 Excel2007にあった VBAProject(PERSONAL.XLSB) がありません。 検索によるとPersonal.xlsbが必要なのかどうかわかりませんが、Excel2007にはそれがあり、記録もできました。 いったい、何が起こっているのかさっぱり分かりません。 個人的には、いつも「個人用マクロブック」が使えて、マクロの記録がどのファイルでもできたらよいと思っています。 どうすればよい顔してください。 よろしくお願いいたします。

  • Excel2003でマクロが動かなくなった!

    Excel97で作成されたVBAマクロがあるのですが、 Excel2000とExcel2002までは問題なく動いていたものの、 Excel2003では実行途中でエラーが発生してしまいました。 VBAマクロには上位互換が無いのでしょうか?? 自分はマクロに詳しくなく使用する立場なのですが、 マクロを作成した人が既に退職している為、 修正できる人間がおりません。。 何か簡単な方法で回避できる方法は無いものでしょうか? 宜しくお願い致します。

専門家に質問してみよう