• ベストアンサー

accessのListBoxでTopIndexのような機能!!

エクセルのリストボックスには、TopIndexプロパティを設定することにより、任意の行をリストの先頭に表示することが出来ますが。Accessのリストボックスには、TopIndexプロパティが無いように思えます。 例えば、何百もあるリスト(そんなリストは実用性が無いってのは、別問題として)から効率的に、選択するため、例えば、キーボードから"T"と入力したら、"T"で始まる項目(行)が、リストのトップに来るようにしたいと思っています。どのようにすれば、実現可能なのでしょうか?どなたか?詳し方教えて頂けないでしょうか? 宜しくお願い致します。

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

何百もあるということはリストボックスじゃなくてコンボボックスですね コンボボックスなら何もしなくても >キーボードから"T"と入力したら、"T"で始まる項目(行) までジャンプします あとはそこでドロップダウンさせて選べばいいだけです もちろんソースは昇順に並べ替えておいてくださいよ

vba_minarai
質問者

お礼

有難う御座います。 確かに、コンボボックスでも、近いことが出来ますので、その方向でとりあえず進めたいと思います。 問題は、リストが、部分的に昇順に並べられないって点で、ゆくゆくゆっくり考えて解決していきたいと思います。その時は、またお力添えのほど宜しくお願い致します。

その他の回答 (2)

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

>キーボードから"T"と キーボードから入力された情報(文字)を受け取るのは、普通はコントールやメッセージボックスを介して、になるでしょう。直接受け取るのはAPIなど使えばできるかもしれませんが、本件では論外でしょう。 コントロールといえば、そういう場合はテキストボックスでしょう。 テキストボックスはリストボックスの上辺に接して位置させておく。 (1)テキストボックスから文字情報を受け取る。 イベントは何を使ったらよいか考えてください。 (2)「文字+*」(ワイルドカード)の条件で、候補全アイテムに対し、SQL文を発行して実行し条件のものを抜き出す。 (3)該当して抜き出されたアイテムをListBoxのアイテムに1行目から順次設定。 その際、候補アイテムの並びを、頻度の多いものは最初や前の部においておくか、効果があるなら、SQL文で並び順を指定しておく。 これらはアクセスVBAを全艇にしてます。 コンボボックスのイベントに、文字を入れるとその都度絞られていく (インテリセンス機能のような)イベントを持たせられるか、あったか調べてみてください。無いと思う。 http://chiebukuro.yahoo.co.jp/service/question_detail.php?queId=4598224 こんなのも載っていました。 精緻にやるならリストボックスの候補アイテムに指定実績頻度を保持するとかしかないでしょうが、複雑になります。

vba_minarai
質問者

お礼

KeyPressで、実現できそうかなぁ?って思い次のような文書いてみました、が上手く行かず奮闘中です。 Private Sub 名称入力_KeyPress(KeyAscii As Integer) Dim stSQL As String Input_Text = Me.名称入力.Text & Chr(KeyAscii) Me.ラベル5.Caption = Input_Text '確認用の仮の表示です。 stSQL = "SELECT 名称取込.名称 " & _ "FROM 名称取込" & _ "WHERE 名称 Like " & Input_Text & "* ;" Me.名称リスト.RowSourceType = "Table/Query" Me.盤名称リスト.RowSource = stSQL End Sub でも、上手く行きません。 RowSourceType = "Value List" として RowSource = "1月;2月;3月" とすれば、リストボックスにはちゃんと表示されるので、SQL文を単に代入してもだめなんだぁ?ってところで、止まっています。 教えて頂いた内容をよく読み、もう少し考えてみたいと思います。有難う御座いました。

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

> キーボードから"T"と入力したら、"T"で始まる項目(行)が、リストのトップに来るように 特に設定しなくても、そうなっていないでしょうか。 もしリストの中身が英数字のみでしたら、リストボックスの「漢字変換モード(IMEMode)」 を「使用不可(Disable)」に設定してお試し下さい。 また、漢字・かな混じりでしたら、同じく「漢字変換モード」を「ひらがな(Hiragana)」に設定 した上で、(入力文字が変なところに表示されるのは気にせずに)そのリストボックスに 先頭文字1個を入力&"確定"させてみて下さい。 (Access97で確認した限りでは、入力・確定させた文字に合致する先頭のアイテムに  移動しました) ・・・ご質問の意図を勘違いしていましたらすみません。

関連するQ&A