エクセルVBAでマクロ内でマクロを選択する方法は?

このQ&Aのポイント
  • エクセルVBAのマクロ内で他のマクロを選択して実行したい場合、具体的な手順は以下の通りです。
  • まず、対象のデータを選択させるために入力BOXを表示し、開始番号と終了番号を指定します。
  • 次に、A~Gのどのマクロを実行するかを選択させるための選択画面を表示します。
回答を見る
  • ベストアンサー

エクセルVBA(マクロ内でマクロを選択する)

いつも有難うございます。 表題の件でご教示ください。 エクセルVBAのマクロ内でマクロを選択して実行したいと考えてます。 調べたのですが、単にマクロ内で他のマクロを呼び出す方法はありましたが 「選択して」という点が見つからず、恐縮ですがお願いいたします。 具体的には以下のような内容です。 (1)基本となるデータが1~100まであるとする (2)サブルーチンとしてのマクロ群A~Gがあるとする (3)データ1に対してはマクロAを行い、データ2、3に対してはマクロBを行い・・・という形でそれぞれ対応させるマクロが違う (4)データ50~70は同じマクロを実行したい (5)このときに実行するマクロで ・対象のデータを選択させる(入力BOXで開始番号(50)と終了番号(70)を指定する) ・A~Gのどのマクロを実行させるか選択させる ・データ50~70に対して、選択したA~Gのいずれかのマクロを順次実行していく というものを作りたいと考えています。 全体的なイメージは完成しているのですが、マクロ群を選択させる方法がわかりません。 (マクロ群A~Gはすでに作って使用です) 何卒、宜しくお願いいたします。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

マクロ名は既に分かっているのですからコンボボックスか何かで選択させて、選択したマクロ名のマクロを実行したいと言う事ですかね? 例としてA1セルに"Sample_A"または"Sample_B"と入っているとします。 Private Sub CommandButton1_Click()   Dim sFuncName As String   sFuncName = Range("A1")   Application.Run sFuncName End Sub ↓以下は標準モジュールに Sub Sample_A()   MsgBox ("マクロA") End Sub Sub Sample_B()   MsgBox ("マクロB") End Sub

e-d-o-
質問者

お礼

有難うございました。とても勉強になりました。

その他の回答 (2)

  • pa_cotta
  • ベストアンサー率43% (25/58)
回答No.2

listboxとかでマクロの一覧を表示して、選択した名前の関数を実行するようにすればできませんか? しばらくVBAというかVBは触ってないのでうろ覚えですが、「call 関数名」で関数の呼び出しができた覚えがあります。 マクロの一覧は配列とかに入れておけばひっぱってくるのも楽かと思います。 どちらにしろ開始番号と終了番号を入力するのであれば、入力用のフォームを作ってその中で 一緒にマクロまで選択させてしまうのがいいかと。

e-d-o-
質問者

お礼

有難うございました。とても勉強になりました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

例えば次のようなマクロにします。 Sub マクロ1 () ・・・・ Call マクロ2 ・・・・・ End Sub Sub マクロ2 () ・・・ ・・・・ End Sub

e-d-o-
質問者

お礼

有難うございました。とても勉強になりました。

関連するQ&A

  • EXCEL マクロ 選択肢

    現在、営業担当ごとに売り上げなどのデータ集計をするマクロを組んでいます。 マクロはできているのですが、担当者1人につき1つのマクロを組んでいるのでそれを1つに集約したいと思っています。 マクロの内容はほぼ同じで担当者のアルファベットを変えているだけなので、マクロ実行時に担当者のアルファベットを選択させマクロを実行するようにしたいのですが、方法が分かりません。 理想はマクロ実行時に選択肢が表示されその選択した値で分岐させてどの担当者のデータ集計をするかを判断するようなものにしたいと考えています。 よろしくお願いいたします。

  • マクロを使い選択範囲を次々と変えて並べ替えたい

    マクロ作成は 範囲選択 A4~G12 マクロ記録開始 並べ替え E列 降順 マクロ記録終了 でマクロを作成し 次に範囲選択 A14~G22でこのマクロを実行すると範囲選択が前と同じA4~G12が並べ替えられてしまいます。 マクロの中を見ると範囲選択 A4~G12が書かれてしまっています。 次のように、選択範囲を次々と変えて並べ替えるマクロを作りたいのですがお教え願います。 1. 範囲選択 A4~G12を選択 マクロ実行で選択範囲をE列の値で降順並べ替える 2. 範囲選択 A14~G22を選択 マクロ実行で選択範囲をE列の値で降順並べ替える 3. 範囲選択 A28~G32を選択 マクロ実行で選択範囲をE列の値で降順並べ替える

  • 複数マクロの選択実行方法を教えて下さい

    VBA初心者です。 現在2つのマクロがあります。 イメージとしては、 コンボボックスのようなドロップダウンリストから、 1つのマクロを選択したら、そのマクロを実行できるというものです。 (※2つ同時とか、2つ連続して、マクロの実行と言う意味ではありません) 今後マクロが増えることも加味して、 ・フォームでもActivXでも、 ・コンボボックスでもボタンでもリストボックスでも、 方法は問わないので、出来る方法があれば教えて頂きたいです。 色々検索してみましたが探しきれなかったので、宜しくお願いします。

  • エクセルVBAでマクロを使ったシステムについて

    はじめまして。 私は今仕事でちょっとしたシステムをエクセルで作っています。 VBAを初めて使うのでご教示頂けたら幸いです。 私が作りたいシステムのイメージは下記の通りです。 リストボックスが二つあって、それぞれ大カテゴリと小カテゴリ。 例えば大カテゴリには野菜、魚、果物などが選択できるようになっていて、 大カテゴリで野菜を選択した場合には小カテゴリでじゃがいも、玉ねぎ、ほうれん草が、 大カテゴリで魚を選択した場合には小カテゴリで鮭、秋刀魚、鰯が、 大カテゴリで果物を選択した場合は小カテゴリでみかん、りんご、バナナが選択できるようにしたい と思っています。 そしてその選択したアイテムによって、変数に値が代入され 別に作ってあるマクロの変数に値を飛ばし、 そのマクロを実行させるようにしたいのです。 変数に値というのは、例えばじゃがいもを選択した場合には、 i=3,k=3 といった具合です。 また別に作ってあるマクロというのは、例えば鮭を選択した場合だったら、 その鮭の写真や詳細なデータをDBから拾いエクセル上に表示させるマクロです。 こちらのマクロはもう完成しております。 このようなシステムを作るのは可能でしょうか? どなたかコードを具体的にご教示頂けましたら幸いです。 何卒宜しくお願い申し上げます。

  • EXCEL VBAを使ってマクロを組んだのですが、消えてしまいます。

    VBAを使ってマクロをEXCELに組んだのですが、貼り付け先のデータをダブルクリックするとデータが消えてしまいます。 組んでいるマクロは (前提) ファイルA・・コピー元データ ファイルB・・貼り付け先データ (内容) Aファイルでマクロを実行すると、Aファイルの内容がBファイルにコピーされるというものです。 Aファイルの元データは数式のため、Aファイル内でいったん値として貼り付けてから再度コピーして、Bファイルに貼りつけています。 Aファイルは自分で作成したものですが、Bファイルは他社作成のため、もろもろ変更ができません。 Aファイルにもロックが必要のため、保護をかけています。(ロック、表示ともに) マクロ実行後、Bファイルの貼りつけされたデータをダブルクリックすると、ダブルクリックしたセル内容が消えてしまいます。 まったく原因がわからず困っています。すみませんがどなたかわかるかたお願いいたします。

  • Excelで、コンボボックスで選択したとき特定のマクロを動かす

    1つのシートにコンボボックス(フォームコントロール)を2つ並べてあります。  コンボボックス”ドロップ1”   コンボボックス”ドロップ2”  【選択肢】             【選択肢】  ・1回                ・A  ・2回                ・B  ・3回 とあります。それぞれのコンボボックスの選択肢は、別のシートに名前を定義して表示するようにしてあります。 その際、上の例だとマクロを6種類用意してあります。  (1) 1回A  (2) 1回B  (3) 2回A  (4) 2回B  (5) 3回A  (6) 4回B とあり、1つ目のコンボボックスで「2回」を、2つ目のコンボボックスで「B」を選んだ場合、 (4)のマクロを実行するようにするにはどのようにしたらよいでしょうか? ※ コンボボックスは両方選ばない限りはマクロを実行させません。 また、両方既に選択してあり、そのマクロが一度実行させた後、一方だけ変更しても他のマクロを実行させたいです。 また、本件とは別の内容となっていまいますが、コンボボックスなどが”フォームコントロール”と”ActiveX コントロール”と2種類あるのですが、どのように違うのでしょうか? ちなみにExcelは2007です。ご教授よろしくお願いします。

  • エクセルの印刷マクロについてご教示下さい。

    現在、     シート1のA列に番号(NO1~200)を、B列からG列までには各番号のデータを入れて     整理したものを、シート2で作成した印刷様式に、印刷マクロ(年賀状の宛名印刷を修正     したもの)を使って印刷を行っていますが、マクロを実行するとデータがない番号も印刷     (カラ印刷)していますので、困っています。         印刷データがない番号(例えばB列にデータがない)については、印刷しないようにする     には、どのようなコードを入れればよいのでしょうか。          VBAをはじめたばかり(素人)ですので、よろしくお願いいたします。(エクセル2003使用)

  • エクセルで特定のセルを選択したい(マクロ)

    以下のようなマクロを組もうとしていますが、出来ません。 sheet1において 1)マクロを実行すると、メッセージボックスが出る。 2)メッセージボックスに入力した文字と同じ文字が入力されているセルを選択する。 3)2)のセルの1行下のセルを選択する。 2)で必ずエラーが出てしまいます。どのような方法が良いのか教えていただけるとありがたいです。よろしくお願いします。

  • Excel VBA Find関数の使い方

    下記のようなマクロを作りたいと思います。 <シート名:元データ> B列(商品番号)がA列(ファイル名)に含まれていれば、 A列のファイル名をC列(チェック)に転記するものです。 <シート名:完成形> やりたいことの完成形がこちらのシートです。 詳しいデータは画像データを添付しました。 Findを使用するところまでは調べたのですが、VBA初心者のため シンプルな方法があれば教えてください。

  • ExcelでのVBAマクロについて

    質問させていただきます。 今現在、知人に設定していただいた一つのマクロを使って作業しています。 (そのマクロ自体は【選択したセル】と【直下のセル】のデータを「テキスト」として『前後のスペース』を削除し「セル内改行」で結合する。高さ調整後、1セル分上がる。というものです) 今までは1セルずつこれを使って結合し、セル内文章をまとめて一番上に持ち上げていました。しかし、今回私がやりたいのは1セルずつマクロを実行(ショートカットキーを使っていますが)するのが手間なので、5セル(上下方向にです)に対して一気に先ほどの既存マクロを適応する、という風にしたいのです。(選択セルと直下セルが結合されて選択セル内文章が増えるというやり方ですので、一番初めのポインタ位置は結合したいデータの下から二つ目でないといけません。その場合、この既存マクロを4回繰り返すマクロがほしいのです) 私自身、「記録」機能を使ったマクロしか組んだことがなかったのでVBAのほうをいじってみても知識不足でエラーばかり出てしまい、困ってしまいました。 とても説明がややこしく、分かりづらいとは思いますが、ご回答いただけると有り難いです。

専門家に質問してみよう