• 締切済み

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です。ご教授よろしくお願いします。

みんなの回答

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

こんにちは。 私は、今のところ、2007 Office を購入する予定はないので、2003で回答させていただきます。 最初に、 >コンボボックスなどが”フォームコントロール”と”ActiveX コントロール”と2種類あるのですが、どのように違うのでしょうか? フォームコントロールというのは、アプリケーションの中に組み込まれてあるもので、「軽い」「速い」の特徴があるのですが、フォームコントロールの細かな仕様は、もう探してもないわけです。いわゆる、「隠しオブジェクト」の分類でヘルプにも出てきません。 ActiveX コントロールは、外部ツールです。つけたしも利くわけで、Excel専用もあれば、汎用性のあるものもあります。表現力は豊かです、プロパティも豊富なのです。MS側では、フォームとは縁を切りたいところだろうとは思うのですが、過去の遺産(レガシー)としての互換性で、なかなか捨てることも出来ないわけです。コントロールツール側で行ったほうがいろいろな面で便利だとは思います。 今回のコードは、双方向で実行ということですから、このようなコードでよいかと思います。 標準モジュール 'Option Explicit Dim a As Variant Dim b As Variant Sub ComboBox1_Click()  a = Sheet1.DropDowns(1).Value  b = Sheet1.DropDowns(2).Value  Call SelectMacro End Sub Sub ComboBox2_Click()  a = Sheet1.DropDowns(1).Value  b = Sheet1.DropDowns(2).Value  Call SelectMacro End Sub Private Sub SelectMacro() Dim c As String  c = a & b  Select Case c   Case "11": Call macro1   Case "12": Call macro2   Case "21": Call macro3   Case "22": Call macro4   Case "31": Call macro5   Case "32": Call macro6  End Select End Sub