重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になっています。

リストボックス内に表示したデータを検索するプログラムを作っています。

Private Sub txtName_Change()
 Dim i As Integer

 For i = 0 To List1.ListCount - 1
  If List1.List(i) Like "*" & txtName.Text & "*" Then
   List1.ListIndex = i
   Exit For
  End If
 Next i

End Sub

という感じで、あいまい検索をしています。
検索結果は上手く取得できたのですが、
例えばテキストボックスに「井上」と入力して検索した場合
「上井」というように、
テキストボックスの内容が変わってしまいます。

同じコードを他の場所でも使用しているのですが、
そちらでは問題なく「井上」と表示されたままになっています。

きちんとテキストボックスの中身が「井上」のままでいるには
どうしたらよいのでしょうか…

宜しくお願い致します。

A 回答 (1件)

上記のコードでそれがおきるとは思えないです。


再現性があるかどうか確認してみて、必ず起きるようであれば、ステップインで発生箇所を突き止める。
リストボックスの値がたくさんあるなら、テキストボックスの値が変更されたときのイベントなどでどの瞬間に起きているかつきとめ、原因を探る。

この回答への補足

ご回答有難うございます。

同じコードを記述してある違うフォームではこの現象が起きないので、記述方法がおかしいのかと思い質問させていただきました。

突き止める方法があれば、教えていただきたいのですが…。

私が見ていった限りでは、テキストのチェンジイベントの時には既に値が変わってしまうのです。
if文の所にブレイクポイントを置き、「井上」と入力してみると、値が「上」となってしまうのです。
(他のフォークでは「井」になります)

VBのバグなのでしょうか…

補足日時:2006/09/13 17:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A