- ベストアンサー
オプションボタンとリストボックスの連動のコードで全く反応がない問題
- オプションボタンとリストボックスを連動させるためのコードを作成しましたが、全く反応がありません。どこが問題なのか教えていただけませんか?
- 下記のコードを使用してオプションボタンとリストボックスを連動させようとしましたが、うまくいきません。何が原因なのでしょうか?
- オプションボタンとリストボックスの連動のためのコードを作成しましたが、反応がありません。何が間違っているのか教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>Private Sub UserForm2_Initialize() このコードをUserForm2を起動した時に実行しようとしていますか? もしそうなら Private Sub UserForm_Initialize() です。 ただ、OptionButtonに初期値を設定していなければ OptionButton1やOptionButton2のValueはFalseなので If OptionButton1.Value = True Then も If OptionButton2.Value = True Then も条件として成立しません。 それに変数lastRowはどこで設定してますか? また、 Worksheets("入力!").ActiveCell.Value = ListBox1.Value この書き方はできません。 Option Explicit Dim lastRow As Long Private Sub UserForm_Initialize() With Sheets("リスト") lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row End With 'ListBox1の初期表示をしないなら不要 OptionButton1.Value = True 'OptionButton1.Valueの初期値をTrueにしてListBox1初期表示したい場合は必要 'ListBox1.RowSource = "リスト!B3:B" & lastRow End Sub Private Sub OptionButton1_Change() If OptionButton1.Value Then ListBox1.RowSource = "リスト!B3:B" & lastRow Else ListBox1.RowSource = "リスト!C3:C" & lastRow End If End Sub Private Sub ListBox1_MouseUp(ByVal Button As Integer, _ ByVal Shift As Integer, _ ByVal X As Single, _ ByVal Y As Single) Sheets("入力!").Activate ActiveCell.Value = ListBox1.Value End Sub
その他の回答 (2)
- temtecomai2
- ベストアンサー率61% (656/1071)
背景が見えないので勝手に想像。 UserForm2 に OptionButton1 と OptionButton2 と ListBox1 が配置されている。 OptionButton1 と OptionButton2 はどちらかしか選択できない。(OptionButton1 を選択すれば自動的に OptionButton2 の選択が解除される) 初期状態では OptionButton1 が選択されているものとする。 シート [リスト] の B列と C列には ListBox1 に表示するためのリストがあり、OptionButton の値によってリストを切り替える。 ListBox1 の選択項目を選択すると、選択した項目がシート [入力] のアクティブなセルに入力される。 ってな背景? で、コードを端折ってるのか知らないけれど、Form の Initialize イベントに出てくる lastRow って変数の中身がどこで設定されているのかわからん。 まさか Public な変数とか? とりあえず勝手な想像で書く。 フォームの初期化時に OptionButton1 を選択。(OptionButton1_Click イベントが発生) OptionButton1 が Click されると、シート [リスト] の B3~Bxx が選択項目になる。 OptionButton2 が Click されると、シート [リスト] の C3~Cxx が選択項目になる。 ListBox1 の選択項目を選択すると、選択した項目がシート [入力] のアクティブなセルに入力される。 Private Sub UserForm2_Initialize() Me.OptionButton1.Value = True End Sub Private Sub OptionButton1_Click() Me.ListBox1.RowSource = "リスト!B3:B11" End Sub Private Sub OptionButton2_Click() Me.ListBox1.RowSource = "リスト!C3:C9" End Sub Private Sub ListBox1_Change() Me.Worksheets("入力").Activate Application.ActiveCell.Value = Me.ListBox1.Value End Sub
お礼
早速の回答、ありがとうございます。 自分勝手な質問で失礼しました。 次回より、したい事は細かく記入します。 プロシージャを動作ごとに別ければいいんですね。 大変勉強になりました。 次回質問時にも助けて下さい。 お世話になりました。
- uruz
- ベストアンサー率49% (417/840)
Private Sub UserForm2_Initialize()はフォームがロードされた時に1回だけ機能します。Initializeとは初期化という意味です。 示されたコードにはオプションボタンで選択した時のコードが有りません、何も指示してないのですから反応がなくて当然ですね。 オプションボタンを選択(クリック)するとオプションボタンのClickイベントが発生しますのでそこに対応するコードを書いてください。
お礼
早速の回答、ありがとうございます。 もっと勉強しますので、また行き詰ったら助けて下さい。
お礼
早速の回答、ありがとうございます。 全てにおいて大変勉強になりました。 目からうろこ・・・です。 とても助かりました。 次回質問時にもご教授お願いします。 お世話になりました。