• ベストアンサー

初心者です。エクセルのマクロについてご指導ください。

はじめましてm(_ _)m 皆様のお知恵を拝借したく投稿させい頂きました。 最近エクセルのマクロとVBを覚え始めているのですが、どうしても詰まってしまい、どうしたら良いか悩んでいます。 内容は、既に入力されているワークシートのセルの中身がAならAのマクロ。セルの中身がBならBのマクロを実行と、条件を幾つかに分岐させたいのですが、どうすれば良いですか? 凄く簡単な事を質問しているのかもしれませんが、初心者の私にとって、どう記述して良いのかも検討がつきません。 お忙しいとは思いますが、是非ご指導くださいm(_ _)m

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

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.2

VBAの基本的な記述方法は理解されていることを前提に、ですね。 要するにセルの値を条件にして別の処理をするんですが、セルの内容 を条件にして別々のマクロを実行させることは出来ません。ですので 「セルの中身を条件にして、条件分岐をする」 という発想をします。具体的には Sub test() If Range("A1").Value=a Then ~セルA1の値がaの時の処理~ ElseIf Range("A1").Value=b Then ~セルA1の値がbの時の処理~ Else ~どっちでもない時の処理~ End If End Sub こういう発想をします。 なお、「どっちでもないときの処理」は間違ってa,b以外を書いて しまったときの処理で、これを入れておかないと間違ってマクロを 起動したときにヘンな処理が実行されてしまいます。 通常はメッセージを表示して終わり、程度で充分ですが。

Kaze_no_Ko
質問者

お礼

すばやい、ご指導ありがとうございました。m(_ _)m さっそく、やって見ました。うまく動くことが出来ました(*^ ^*) 何週間も悩んでいたのが嘘のようです。 >、「どっちでもないときの処理」 これって、大事なんですね。 もっと勉強します!本当にありがとうございました。m(_ _)m

その他の回答 (3)

回答No.4

こんにちは。 '------------------------------------------- Sub Test()  If Range("A1").Value = "A" Then     Call MacroA  End If  If Range("A1").Value = "B" Then    Call MacroB  End If End Sub '---------------------------------------- Sub MacroA()   End Sub '------------------------------------- Sub MacroB() End Sub '------------------------------------ 考え方としてはこんな感じでいいのではないでしょうか。 VBAは慣れるまではちょと難儀しますが覚えていくうちに楽しくなってきますので、頑張ってくださいな。 以上です。  

Kaze_no_Ko
質問者

お礼

はじめましてm(_ _)m 素早い、ご指導ありがとうございましたm(_ _)m 細かく、別のマクロを書く事もご指導いただいて、本当にありがとうございましたm(_ _)m >VBAは慣れるまではちょと難儀しますが覚えていくうちに楽しくなってきますので、頑張ってくださいな。 以上です。 はい(*^-^*) 頑張ります。本当にありがとうございましたm(_ _)m

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >内容は、既に入力されているワークシートのセルの中身がAならAのマクロ。セルの中身がBならBのマクロを実行と、条件を幾つかに分岐させたいのですが、どうすれば良いですか? 具体性がないと、回答も、総体的な内容になってしまいます。 大きくわければ、3つの方法があるように思います。 ひとつは、プロシージャ内で、  IF Range("A1").Value ="A" Then   '実行1  ElseIf Range("A1").Value ="B" Then   '実行2  End If    その内容が多岐に渡る場合なら、"Select Case" という方法もあります。    そのほかには、  サブルーチンを用いる方法 があります。 >凄く簡単な事を質問しているのかもしれませんが、 これらは、最初は、テキストを見ながら、組み立てていくしかありません。具体的な内容があれば、また、どなたかが答えるものとしても、基礎でありながら、それは基礎でもない部分が含まれているのです。  ただ、Excel VBAのテキストですから、お間違いないようにね! 私は、ヘルプは、入門~中級ぐらいまでは、そのつながりが見えないので、閲覧するのはあまり賛成しません。体系的な知識が得られないのと、翻訳の質が非常に悪いです。97のヘルプと比較すると段違いに違います。忠実に訳そうとしたばかりに、その元の英文の文章の下手さに引きずられて、翻訳が読めないのです。

Kaze_no_Ko
質問者

お礼

素早い、ご指導ありがとうございましたm(_ _)m 目からウロコが落ちたように、解決しました。 ありがとうございましたm(_ _)m 今まで、ヘルプで一所懸命見ても何がなんだか??? ネットでも勉強してみましたが、適当に解決方法が見つからず、思案していた次第です。 >ただ、Excel VBAのテキストですから、お間違いないようにね! はい(^-^) しっかり勉強します。 本当にありがとうございましたm(_ _)m

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  VBの条件分岐の構文はいくつかありますが、複数に分岐する場合、「Select Case文」が一般的だと思います。  Visual Basic Editorのヘルプの「Microsoft Visual Basicヘルプ」から、「Microsoft Visual Basic Documentation」→「Visual Basicランゲージ リファレンス」→「ステートメント」→「M-Z」の中を見てみてください。(Excel2003の場合。)  エクセルのマクロはBasicというプログラム言語の文法を使っていますので、Basicの入門書を読まれるとよいと思います。 では。

Kaze_no_Ko
質問者

お礼

ご指導ありがとうございました。m(_ _)m Basicの事を理解しないとって思いました。 基本的な事が解って無いのかとも思いました。 お忙しいのにありがとうこざいました。m(_ _)m

関連するQ&A