- ベストアンサー
オプションボタンで○を描いたり消したり
- オプションボタンを使ってセルに○を描画したり消したりする作業について悩んでいます。シートをリンクせずに10枚作成し、各シートに2つのオプションボタンを配置したいです。現在のコードではセルからずれてしまう問題があります。
- セルに収まるような最大の○を描画するためのコードをご教授ください。他のPCでも同様に動作するようにしたいです。
- 以前作成したコードでは、オプションボタンの配置が不正確なため、セル内に収まるように修正したいです。他のPCでも問題なく動作するようにしたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
わかりやすいように書きましたが 実際は事前に変数化して使うと良いかと思います。 また複数シートを使うときなどのことも考えると rangeのところはその前にシート名をつけておくなどしてください。 "C5"を指定したところは書き換えてください。 ActiveSheet.Shapes.AddShape(msoShapeOval, Range("C5").Left, Range("C5").Top, Range("C5").Width, Range("C5").Height).Select また、その都度描いたり消したりするのはよくありません。 最初の1回だけ上記のようなコードか手作業で作成して その後はvisibleプロパティで表示・非表示を切り替えるのが良いでしょう。
その他の回答 (1)
- DreamyCat
- ベストアンサー率56% (295/524)
<<補足です>> ・「描いたり消したりするのはよくありません」とは、何故ですか? ActiveSheetやSelectionを使うのなら別にかまわないといえば構わないのですが、 今後、高速で図を処理するときなどに困るからです。 ・「visibleプロパティ」とは具体的にどのような方法で、どういった利点がありますか? その英語のままで、表示・非表示を切り替えるものです。 sheet1.shapes(1).visible=true 'false のようにして使います。 そこで、下記のようにしておいて呼び出せば、呼び出すたびに表示・非表示が切り替わりますのでプログラムを書く面倒がなくなります。 sheet1.shapes(1).visible=not sheet1.shapes(1).visible
お礼
度々の質問にも関わらず、ご丁寧に回答いただき ありがとうございます。 しばらくPCから離れた環境にいた為、お礼が遅くなり失礼しました。 勉強になりました。 より高度なコードが書けるようがんばります!
お礼
早々のご回答、ありがとうございます。 ばっちり動きました。 ありがとうございました!
補足
VBA素人でして、仰っておられる内容が理解できません。 お手数ですが、詳しく教えて下さい。 ・「描いたり消したりするのはよくありません」とは、何故ですか? ・「visibleプロパティ」とは具体的にどのような方法で、どういった利点がありますか?