• 締切済み

Excel2010のOptionButton1

Excel2010のOptionButton1を、ActiveXコントロールで添付ファイルのようにシート上に、排他ボタンとしてつくりました。この「●横 ○縦」の入力値を読み取り、マクロを実行させたいと思っています。 たとえば、 「●横 ○縦」(横が選ばれている状態:True) ---> 「DO1」 「○横 ●縦」(横が選ばれていない状態:False) ---> 「DO2」 という具合です。「ControlSource」で設定値をセルに書き出して、それを読みこむように しても「例外エラー」が出たりして、お手上げです。 よろしくお願いいたします。

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

>Frameを配置 それは全然お話が違いますね。マクロは使えません。 ではControlSourceにA1などのように記入して適用し、それを素直に所定のセルに記入した数式に読ませて所定の結果を表示してください。 =IF(A1,"D01","D02") といった具合で。 Frameを利用せずシート上に直接オプションボタンを配置していれば、前述回答の方法が利用できます。 その際にオプションボタンの組を作るには、プロパティパネルのGroupName欄に組ごとてきとーに決めたグループ名を記入します。

ohyuhang
質問者

お礼

ありがとうございます。 Frameを利用しないオプションボタンを2こ配置、グループ化で排他的なボタンにすることができました。このボタン「◎」やボタン名の文字を大きくすることは可能でしょうか?プロパティでは「Zoom」項目が見当たりません。表示倍率25%でも状態がわかるようにしたいもので・・・・。 よろしくお願いいたします。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

ん? OptionButtonのプロパティパネルを出して確認してみると判りますが、オプションボタンにはControlSourceはありません。 方法1: プロパティパネルのLinkedCellに、それぞれのオプションボタンの値を書きださせるセル番地を記入する そのセルの値を参照して所定の結果を表示する関数式を所定のセルに記入する 方法2: 横がOptionButton1、縦がOptionButton2だとして シート名タブを右クリック、コードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub OptionButton1_Click() if me.optionbutton1.value then  range("A1") = "D01" else  range("A1") = "D02" end if end sub private sub OptionButton2_Click() if me.optionbutton1.value then  range("A1") = "D01" else  range("A1") = "D02" end if end sub #アクティブXコントロールを使用すると、このようにそれぞれのコントロールごとに動作マクロを登録しなければいけません。 まぁ、このようにやれば出来ることなので特にフォローはしませんが、フォームを使った方が簡単とも考えられます。

ohyuhang
質問者

お礼

迅速なご回答に感謝いたします。ありがとうございます。 >オプションボタンにはControlSourceはありません。 私が間違っていたかもしれません。「開発」のコントロール、デザインモードで「挿入」->「ActiveXコントロール」->「コントロールの選択」->「MicrosoftForms2.0Frame」でFrameを配置、右クリックで「フレームオブジェクト」->「編集」でさらに右クリック->ツールボックスからオプションボタンを2つ配置。排他的な関係になります。配置されたオプションボタンを右クリックすると、ControlSourceが項目としてでてきます。 表示倍率25%で使うため、フォームコントロールでは小さくて、大きさが変えられるActiveXコントロールを使うことにしたためなんですが、おっしゃる通り、フォームコントロールどとマクロが簡単に登録できて便利なんですけどね。 引き続き、よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう