• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excel VBA 作成したUserFormにoptionButton)

Excel VBAでUserFormにoptionButtonを配置し、再表示した際にチェックが消える問題の解決方法

このQ&Aのポイント
  • Excel VBAを使用して作成したUserFormに複数のoptionButtonを配置していますが、UserFormを再表示するとチェックが消える問題が発生しています。この問題を解決する方法を教えてください。
  • また、保存したワークシートを読み込んだ場合にも同様の問題が発生します。ワークシートを読み込んだ際にもoptionButtonのチェックが保持される方法を知りたいです。
  • optionButtonのチェック項目は図形の表示と非表示であり、良い方法があれば教えていただきたいです。

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

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

まず、OptionButton でなくてはいけないのですか?Option Button は、多くの中からひとつを選ぶという種類のものです。図形のVisible に連動させるのは、OptionButton ではなく、CheckBotton のはずです。 Initialize イベントは良いにしても、そのままでは思ったようには行きませんね。 Private Sub CheckBox1_Click()  Activesheet.Shapes("図形1").Visible= Not Activesheet.Shapes("図形1").Visible  '図形1表示 End sub これをそれぞれの図形に反映するには、CheckBox#_Click() それぞれに、コードを書くか、クラスで、図形のIndex とCheckBoxのIndexを対応させないといけません。 Private Sub UserForm_Initialize()  Dim i As Long  Dim o As Object  i = 1  For Each o In ActiveSheet.Shapes   Me.Controls("CheckBox" & i).Value = o.Visible   o.Visible = True   i = i + 1  Next End Sub

B52
質問者

お礼

有難う御座いました。 大変参考にさせていただきました。

B52
質問者

補足

早々な回答有難う御座いました。 一つの図形を表示と非表示にしたい為にOption Button を使いました。 図形のVisible に連動させるのは、OptionButton ではなく、CheckBotton との事で勉強不足で知りませんでした。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

>optionButtonを多数配置しています 多数というが、理屈じゃなくて、1つのフォームに表示できるスペース的な余地は、そう沢山無いはず。 質問者の設計や考えに無理があるのではないか。 フォーム・コントロールの配置の全貌や必要性が質問文では伝わりにくい。 ーー フォームやコントロールは起動の都度、望ましい初期状態にして表示しないと、常識的な状態になってしまうと思う。チェックボタンのOffやテキストボックスの空白のような。どうなるかを自分で確認するのも勉強のうち。 ワークシートに直接貼り付けたテキストボックスやチェックボックスは状態が保存された。 FormのLoadやInicializeイベントで表示するごとに、望ましい初期状態に設定することが必要ではないかな。 VisibleがFalseをTrueにするぐらいなら、終了したわけでないので、その前の状態が現れると思うが。 >UserFormをワークシート上に再表示すとるー>すると どういう方法・コード・タイミングで再表示したのかな。 この質問は相当高度な内容を含んでいるようにも思うが。 質問の表現では判らない。 http://questionbox.jp.msn.com/qa1030689.html などVB.NETの例だが、「プロパティ値の保存」という事で話題になっている。 >UserFormをワークシート上に再表示すとる 1つのワークシートとユーザーフォームは本来関係付けるものではないはず。 ユーザーが実質上シートとフォームを関連付けて使っているだけなのではないかな。 表示はアクチブシートの上(?と共に?)に表示される。 「シートごとにユーザーフォームを別にする」ことは使い方としては出来る。 http://itpro.nikkeibp.co.jp/article/COLUMN/20071023/285157/ この辺の理解も初心者には難しいと思う。 ーー フォームの表示そのものが、ブックやシートのイベントをきっかけにして表示されないと、直前のブックを閉じる前にフォームが表示されていたからといって、次に開いたとき自動(特別のユーザープログラムなしで)でそのフォームが現れるものではないと思う。

すると、全ての回答が全文表示されます。
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

ユーザフォームのInitializeイベントで初期値を設定してください。 UserForm_Initialize() です。

すると、全ての回答が全文表示されます。

関連するQ&A