こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

投稿日時 - 2002-08-24 12:21:49

QNo.342486

すぐに回答ほしいです

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

こんにちは。

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

投稿日時 - 2002-08-24 13:26:08

お礼

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

投稿日時 - 2002-08-26 09:10:14

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

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

投稿日時 - 2002-08-25 22:24:32

お礼

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

投稿日時 - 2002-08-26 09:05:27

ANo.2

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

投稿日時 - 2002-08-24 13:39:31

お礼

どうもありがとうございました。

「したいこと」が良く伝わってこないです・・・・」

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

ご指摘ありがとうございます。

投稿日時 - 2002-08-26 09:08:46

あなたにオススメの質問