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

このQ&Aのポイント
  • エクセルVBAを使用したマクロを使ったシステムについて、具体的な要件を説明します。
  • システムは、リストボックスで大カテゴリと小カテゴリを選択できるようになっており、選択したアイテムに応じて特定のマクロが実行されます。
  • システムの実現には、VBAで変数に値を代入し、マクロを実行させる仕組みが必要です。
回答を見る
  • ベストアンサー

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

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

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

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

> 別に作ってあるマクロの変数に値を飛ばし、 > そのマクロを実行させるようにしたいのです。 これは、そのマクロに引数で値を渡すって事で良いのでしょうか? > 変数に値というのは、例えばじゃがいもを選択した場合には、 > i=3,k=3 といった具合です。 なぜ、「じゃがいも」がこの値になるのか解りませんでしたので、ListBox1とListBox2のListIndexの値(選択されているインデックス)を渡すようにしてみました。 Sheet1に添付の図の様な表を作成しておきます。 また、フォームのListBox1とListBox2のRowSourceプロパティには、それぞれ初期値として Sheet1!A2:A4 Sheet1!C2:C4 を入れておいてください。 'ListBox1がクリックされたら小カテゴリの内容を変更する。 Private Sub ListBox1_Click()   nSel = 1 + ListBox1.ListIndex   sStr = "Sheet1!" & Range(Cells(2, nSel + 2), Cells(4, nSel + 2)).Address   ListBox2.RowSource = sStr   ListBox2.ListIndex = 0   End Sub 'ボタンを押したら作成済みのマクロを起動する Private Sub CommandButton1_Click()   Call 作成済みのマクロ(ListBox1.ListIndex, ListBox2.ListIndex) End Sub

tyu_totoro
質問者

お礼

お忙しいなかご回答頂きまして誠に有難うございます。 大変参考になりました。

関連するQ&A

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

    お世話になります。 エクセルで、列に入力された値が有る範囲を超えた場合、 その値のみを赤色に変換したいのですが、 どのようにマクロを組めばよろしいでしょうか。 VBAに関しては、全くの初心者ですので わかりやすく教えて頂ければ幸いです。

  • エクセル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はすでに作って使用です) 何卒、宜しくお願いいたします。

  • エクセルvbaの変数について

    エクセルVBAについて、同じ型の値が複数列あった際に、変数に取り入れる方法として、それぞれ一つずつ別々に変数に入れる場合と、ユーザー定義型変数を定義して入れる場合の二つがあると思いま すが、どちらの方がメモリを使わなくて済むのでしょうか。また、他にも長短があればご教示下さい。

  • excelのマクロでファイル一覧取得,グラフ作成

    以下のような作業をするために,EXCELのマクロを組もうと考えています. 指定したフォルダ以下のCSVファイルを取得(サブフォルダも含む)  ↓ 見つけたCSVファイルをエクセルで開き,値が含まれている範囲を選択してグラフを作成  ↓ "*.xls"として保存 エクセルのマクロは初めてなので,どうコーディングすればいいか全くわからず困っています. どなたかご教示くだされば幸いです. よろしくお願いいたします.

  • Excelマクロ(vba)についての、良い本は

    Excelマクロ(vba)の初級者です。 プロではなく、一般の事務職ですが、これまで我流でマクロを作ってきました。 ですが今後のvbaの勉強のために、良い本を探しています。 当方のレベルと、今後求めるレベルを書きに記しますので、おすすめの本を教えて頂ければ幸いです。 当方のレベル:一応、業務上使用に耐えるツールは作成可能なレベル ・マクロの変数、条件分岐や繰り返しの記述を理解して使っている ・配列変数や別のスクリプトを呼び出すなどはよく判らなかったり器用にできない ・変数を宣言せずに使っている ・デバッグの効果的な進め方がわからない ・一般的、常識的なvbaの書き方がわからないので、人に教えたりはできない 今後できるようになりたいこと: ・人に教えたり、自分が作成したマクロを他人にも判りやすく説明するために、一般的、常識的なマクロの記述方法を知りたい ・デバッグを効率的に進めたい ・その他、マクロ作成に役立つツールの使い方や方法論などを身に着けたい 以上です。 宜しくお願いします。

  • ExcelのVBA。public変数の値が消える

    VBAについて。Excelの2003や2007を使っています。標準モジュールで public 変数を定義しました。 ユーザーformを使い、パブリック変数に値を入れたり変更し、標準モジュールに戻ったとき、そのpabulic変数が resetされてしまっている事があります。全く同じマクロで、この現象が起こることと、起こらないことがあります。excelの2003でも2007でも、同じ現象が起こります。簡単なマクロで再現性のある具体的なものを示したいと思い、試しましたが、できませんでした。簡単なマクロでは、きちんとパブリック変数は保持されています。問題のあるマクロはかなり長いものなので、とても示せません。問題がどこにあるのかわかりません。このマクロで不都合があるという具体的なマクロを示すことができない状態での質問で、申し訳ありません。 また、このようなプログラミングをしていて思ったのですが、ユーザーフォームに対してユーザーが任意の引数を渡す方法あるいは、ユーザーフォームから引数を受け取る方法はあるのですか?今は、pubulic変数を用いたり、具体的なセルに値を代入したりしていますが、どう考えてもそれはエレガントではないし、汎用性もないと思います。引数で引き渡すのが一番綺麗でいいとは思うのですが、それが可能かどうかわかりません。

  • エクセル2003で別のマクロで選択したセルに別のシートからコピーして貼り付けるマクロ

    別のマクロで選択したセルに別のシートからコピーして貼り付けるマクロ、どうしても、このマクロが作れないです。 難題すぎて・・・・ 貼り付けるセルの値は選択ボタンによって変わる仕様ですが、エクセル2003で可能なんでしょうか? 難しすぎてコードが全然解らない状態です どなたかご教授願えれば幸いです。

  • エクセル A列の値によって、B列の入力規則を変更

    エクセル2007を使用しております。 下図のように、【カテゴリー】A列が「野菜」の場合、【種類】B列で野菜の種類が表示され、プルダウンの中から選択、【カテゴリー】A列が「果物」の場合、【種類】B列で果物の種類が表示され、プルダウンの中から選択… ということをしたいのですが、A列の値によって、B列のプルダウンに表示される内容を変えるには、どういった方法が一番よいか、教えていただけないでしょうか。 INDEX、MACH関数、リストボックスやコンボボックスなどのサイトを見たのですが、上手くできず、勉強不足で申し訳ありませんが、急を要するためお力を貸していただけましたら幸いです。 どうぞよろしくお願いいたします。

  • エクセルマクロ(VBA)の変数について教えてください。

     仕事でエクセルを利用してファイルを作ることが多いのですが、関数とマクロに課題のある者です。  マクロはそんなに高度で複雑なものが現状、必要でないので記録マクロで事足りていますが、私のやり方は  1.手順を記録  2.マクロの実行  3.ステップイン機能でステートメントの動作を見る  4.無駄な構文を削除  5.エラー(デバッグ警告表示)修正  6.日々替わる取り扱いファイル、シート名をそこだけ置き換えて汎用性を持たせている。  7.さらに動作を加えたい時は新しいマクロ記録で構文を記録し、ベースマクロに構文を追加している  8.日々更新変動されるファイルは情報量の余裕をみて、ファイルが想定を超えないように作っている。  9.記述式マクロ(VBA)が十分出来るスキルが乏しい  と言うのが私のレベルですが、参考書、テキストを読んでいると必ず、『変数』Dimスペルというものが出てきます。この意味がもう一つよく分からないので、ツール→オプションのダイヤログボックス編集で『変数の宣言を強制をする』を外しています。  変数は実行の都度変わる値を扱ったり、代入すると言うことは何となく分かるのですが、完全に理解できてないので、(記述が分かりにくい)そこから前に進めません。  サンプル例はありますが、詳しく解説しているものが少ないです。『何故、こうなるか?』というのが抽象的な説明です。  『変数宣言を強制』にチェックを入れた場合、今まで、チェック無しで作ったマクロファイルは動作しませんか?  たまに自動メンバー表示機能から構文を挿入しますが、個々のプロパティやメソッド、コレクションなど記述構文は英語ですが、これを日本語に置き換えて理解できるようにしたいのですが、皆さんはどのようにされたのですか?  

  • エクセルマクロ、教えてください。

    エクセルマクロ、教えてください。 とても困っています 泣 だれかご教授をおねがいいたします。 画像のような表があり、マクロボタンを押すと、画像下のように文字列にして別シートに出力したいのですが、 賢い形で作ることが出来ません。 if文がとても多くなってしまいます。 繰り返し処理などあるようなのですが、難しくてついていけません。 だれかきれいなロジックを教えていただけないでしょうか。 お願いいたします! 条件として、 表は、いくつかあり、画像は果物4種類ですが、野菜8種類の表などにも流用できるマクロをくみたいです。 A商店を左から順番に文字列に格納して、""になるまで繰り返す・・・ ""がきたら、B商店へ・・・といった形でしょうか。 また、商店の数も不特定なので、こちらも""になるまで繰り返すという条件でお願いいたします! エクセル関数で出来るじゃんとおもうでしょうが、例として簡単なものに書き換えただけなので、 回答はぜひマクロでお願いいたします!