• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル OptionButton)

エクセルでOptionButtonのセル値を反映させる方法

このQ&Aのポイント
  • エクセルのOptionButtonを使ってセルの値を表示させる方法について質問があります。
  • 現在はOptionButton1をクリックしたらSheetのセルに'男'と記載されるようなマクロを作成できていますが、セルの値が'男'の場合にOptionButton1にマークを付ける方法がわかりません。
  • 現在試しているコードではうまく動作せず、どうすればいいかわかりません。ご教示いただけますと幸いです。

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

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

From は、おそらくは、UserForm のことだと思います。 質問のコードには不明な点もあり、のた。#1補足は、最初の質問要件とは内容が違っていますから、整合性が取れません。 そういう場合は直接の回答は出来ませんので、こちらでサンプルを作ります。 双方向で、反映することが可能ですが、以下のような簡単なコードでも、慣れていないと難しいです。説明の要点が取れていないレベルのご様子から、動的な入力位置のセルから、その値を取得し、その値をOptionButtonに反映させることは、「モジュールレベルの変数」が分からないと、おそらく解決しないのではないかと思います。シート・セルからの反映は割愛します。 言葉で説明するよりも、コードで示したほうが分かりやすいはずで、ここから参考になるものがあるはずです。 条件:OptionButton1, OptionButton2    TextBox1    UserForm1 上に取りける シートには、Changeイベントを設ける。 気をつける点は、UserForm を立ち上げる時に、Modal モード Offにする UserForm1.Show False 'または 0 '// '標準モジュール(シートモジュールを使う場合は必要ですが、使わないなら、UserForm1モジュールに書いてもよい) Dim Sh2 As Worksheet Dim lngNumber As Long --------------------- 'ユーザーフォームモジュール Private Sub TextBox1_Change()  If IsNumeric(TextBox1.Text) Then   lngNumber = TextBox1.Text   Call OptionBPr2  End If End Sub Private Sub UserForm_Initialize()  Dim i As Long  Set Sh2 = ThisWorkbook.Worksheets("Sheet1")  Application.Goto Sh2.Range("A1")  i = Sh2.Cells(Rows.Count, 6).End(xlUp).Row  TextBox1.Text = i  lngNumber = i  Call OptionBPr2 End Sub Private Sub OptionButton1_Change()   Call OptionBPr End Sub Private Sub OptionBPr()  lngNumber = Val(TextBox1.Text)  If lngNumber = 0 Then   MsgBox "数字が入っていません。", vbExclamation   Exit Sub  Else   With Sh2    .Cells(lngNumber, 6).Value = IIf(OptionButton1, "男", "女")   End With  End If End Sub Private Sub OptionBPr2()  Dim i As Long  Dim strTxt As Variant  lngNumber = Val(TextBox1.Text)  If lngNumber = 0 Then   Exit Sub  Else   With Sh2    strTxt = Trim(.Cells(lngNumber, 6).Value)    If strTxt <> "" Then     i = InStr("男女", strTxt)     If i = 1 Then      OptionButton1.Value = True     ElseIf i = 2 Then      OptionButton2.Value = True     End If    Else     OptionButton1.Value = False     OptionButton2.Value = True    End If   End With  End If End Sub -------- 適当な場所にボタンで、UserForm 起動用 Sub Button_Click()  UserForm1.Show False 'モーダルモードをオフにする End Sub --------

pop2003
質問者

お礼

いつもありがとうございます! 私自身質問が下手で答える側大変だと痛感しています! 今後とも宜しくお願いします

その他の回答 (1)

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

>下記のようにしてみましたができません! 上手くできるためには,そのマクロについて 1.「どのタイミングで作動させたいのか」正しく整理し,適切なプロシジャに記述すること。  たとえばFormがInitializeされるタイミングで?  たとえばFormの何かを(何を?)クリックしたとき?  たとえばFormの何かが(何が?)updateされた後?  もしかしたらシートのセルに(どこのセルに?)「男」とか「女」とか他の要件を記入した時? 2.データを取得するため必要なlngNumberに,事前に適切な値が格納されていること。  漠然と「セルの値が」じゃなく,具体的に「どのセル」の値を検査したいのか?  そのセルを決定できる(=OptionButtonにマークできる)のは,そもそもいつ何をしたときなのか? といったような事を明確に設計しなければ出来ません。 ひっくり返せば,そういった動作の流れをきちんと定義すれば,どんな風にマクロを書けば良いのかは自ずから明らかです。 いま,一体何を考えてどんなプロシジャの中にそのマクロを書いて失敗したのか,よく考えたらどうしなきゃいけなかったのか(何をしたかったのか)もう一度よく整理して考えてみて,それでもマクロが書けなかったら考えた具体的な内容を添えてもう一度ご質問を投稿し直してみましょう。

pop2003
質問者

補足

ありがとうございます。すいません補足します! 1タイミングとしては、From内のTextBox1にID番号を入力させ  コマンドボタンをクリックしたら、他のBookが開き”Sheet1”の  AセルにID番号が同じ番号があれば、検索して 例えば他のBook”Sheet1” A  B    C  12 Aさん  男 13 Bさん  女 がある場合 FromのTextBoXに12と入力してクリックすると TextBoX2=Aさんと表示 OptionButton1=”男”というように表示させたいのですが チェックを表示させるのに困っています。 このFromは新規登録でも使用しています。

関連するQ&A