• ベストアンサー

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 を使っています。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

こんにちは。 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

yokoneco
質問者

お礼

大変参考になりました。 ご丁寧な回答どうもありがとうございました。

その他の回答 (2)

  • brick
  • ベストアンサー率12% (2/16)
回答No.3

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は必要なさそうですよ。

yokoneco
質問者

お礼

どうもありがとうございました。 早速ためします。

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

「リストの数」という変数は各プロシジュアーに出てきます。 自分では各プロシジュアーで同じ語句(変数名)を使っているので、同じものと考えているのでしょうが、値が渡って(この意味判りますか)いないとおもいます。 「変数の適用範囲(スコープ)」と言うのが、解説書の解説個所の章のタイトルです。 関数の引数で渡すか、どのプロシジュアーからでも使える 変数として宣言されてはどうでしょう。 蛇足ですが、それと「したいこと」が良く伝わってこないです。設計レベルで別の簡単なやり方があるような感じが します。したいことを記されては。

yokoneco
質問者

お礼

どうもありがとうございました。 「したいこと」が良く伝わってこないです・・・・」 実は、この記述はどのように動作するのか? VBA参考書の記述を応用するには、どうしたらよいか?を主目的として いるため、おっしゃるとおり、設計レベルで別の簡単なやり方があるのでは というご指摘もごもっともかと思います。 ご指摘ありがとうございます。

関連するQ&A