- ベストアンサー
Listindexの値が上手く取得できません。
VBA初心者です。的外れな質問をしている場合にはご容赦ください。 まず ユーザーフォームを表示した時に、 Private Sub UserForm_Initialize() Set ws1 = Worksheets("s1") Set gui2 = 銘柄コードから検索 gui2.ListBox1.AddItem "銘柄コードで検索" gui2.ListBox1.AddItem "銘柄名で検索" gui2.ListBox1.AddItem "銘柄カナで検索" End Sub とリストボックスの各項目を作成しました。 Listboxをクリックした時にlistindexを「リストの数」に格納 する(自分のイメージ) Private Sub ListBox1_Click() Set gui2 = 銘柄コードから検索 Set ws1 = Worksheets("s1") Dim リストの数 As Integer リストの数 = gui2.ListBox1.ListIndex End Sub (自分のイメージ)コマンドボタン2をクリックすると 現在選択されているListbox1のListindexが「リストの数」 に格納されているので、次のSelect文の動きをすると思っています。 Private Sub CommandButton2_Click() Set gui2 = 銘柄コードから検索 Dim リストの数 As Integer リストの数 = gui2.ListBox1.ListIndex Select Case リストの数 Case 0 MsgBox リストの数 Call 銘柄コードで検索 TextBox1.Text = "" gui2.TextBox1.SetFocus Case 1 MsgBox リストの数 Call 銘柄名で検索 MsgBox リストの数 TextBox1.Text = "" gui2.TextBox1.SetFocus Case 2 MsgBox リストの数 Call 銘柄カナで検索 TextBox1.Text = "" gui2.TextBox1.SetFocus End Select End Sub コマンドボタン2をクリックした場合に、ListIndexの値を判断し、Select文 の条件どおりに動作させるためには、どのようにしたらよいでしょうか? EXCEL2000 を使っています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 Set ws1 = Worksheets("s1") Set gui2 = 銘柄コードから検索 ↑このSetの意味が良く解からず、イマイチ何をしたいのか理解出来ませんが、 UserFormにListBoxとCommandButtonを1つずつ置いてテストしてます。 参考になれば、、 '************************************************ Private Sub UserForm_Initialize() CommandButton1.TabIndex = 0 With ListBox1 .AddItem "銘柄コードで検索" .AddItem "銘柄名で検索" .AddItem "銘柄カナで検索" End With End Sub '************************************************ Private Sub CommandButton1_Click() HogeHogeCall (ListBox1.ListIndex) End Sub '************************************************ Sub HogeHogeCall(i As Integer) Select Case i Case 0: MsgBox i & ", " & ListBox1.List(i) Case 1: MsgBox i & ", " & ListBox1.List(i) Case 2: MsgBox i & ", " & ListBox1.List(i) Case Else MsgBox "ダメ", vbOKOnly + vbInformation, "Hoge" End Select End Sub
その他の回答 (2)
- brick
- ベストアンサー率12% (2/16)
Listindexはわからないんですけど、Textプロパティを使ってみました。 Private Sub CommandButton2_Click() Dim a$ a = 銘柄コードから検索.listbox1.Text Msgbox (a) Select Case a Case "銘柄コードで検索" Call 銘柄コードで検索 Case "銘柄名で検索" Call 銘柄名で検索 Case "銘柄カナで検索" Call 銘柄カナで検索 End Select End Sub 「call」は省略できます。 質問の中のコードを見る限り、listbox_clickは必要なさそうですよ。
お礼
どうもありがとうございました。 早速ためします。
- imogasi
- ベストアンサー率27% (4737/17069)
「リストの数」という変数は各プロシジュアーに出てきます。 自分では各プロシジュアーで同じ語句(変数名)を使っているので、同じものと考えているのでしょうが、値が渡って(この意味判りますか)いないとおもいます。 「変数の適用範囲(スコープ)」と言うのが、解説書の解説個所の章のタイトルです。 関数の引数で渡すか、どのプロシジュアーからでも使える 変数として宣言されてはどうでしょう。 蛇足ですが、それと「したいこと」が良く伝わってこないです。設計レベルで別の簡単なやり方があるような感じが します。したいことを記されては。
お礼
どうもありがとうございました。 「したいこと」が良く伝わってこないです・・・・」 実は、この記述はどのように動作するのか? VBA参考書の記述を応用するには、どうしたらよいか?を主目的として いるため、おっしゃるとおり、設計レベルで別の簡単なやり方があるのでは というご指摘もごもっともかと思います。 ご指摘ありがとうございます。
お礼
大変参考になりました。 ご丁寧な回答どうもありがとうございました。