[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『findメソッドの抽出漏れについて』(pd)
蔵書検索ツールのようなものを作りたいと思っています。検索ボタンを設置し、findメソッドおよびfindnextを用いながら、検索したワードをリストアップするといった具合なのですが、例えば「松島」で検索すると本来は5件のヒットしなければいけないところ、2件しかヒットしません。一方で、「松島」でヒットしなかったものについては「松島栄治」などで検索するとヒットします。解決方法が見出せません。ちなみに、findの引数であるlookatはxlPartにしています。
< 使用 Excel:Excel2019、使用 OS:Windows10 >
(もこな2) 2020/05/15(金) 17:11
Sub 検索()
Dim myRange As Range Dim myObj,myObj2 As Range Dim Tytle As String
If Title <>”” then
Set myRange = Worksheets(“データベース”).Range(“D1:D19464”) Set myObj = myRange.Find(what:=Tytle, lookat:=xlPart)
If myObj Is Nothing Then MsgBox “見つかりません。 Else Set myObj2 = myObj Do Set myObj2 = myRange.FindNext(after:=myObj2) Cells( 18+i ,2 ).Value = myObj2 i = i + 1 Loop While myObj2<>myObj End if End if End Sub (Pd) 2020/05/16(土) 09:13
> Dim Tytle As String ↑ スペルが違ってますが、大丈夫ですか? ↓ > If Title <> "" Then
そもそもTitleはどこで値を決めているんですか? 決めてなかったら処理しないで終了ですよ。
(半平太) 2020/05/16(土) 10:06
Loop While myObj2<>myObj ↓ Loop While myObj2.Value <> myObj.Value
と解釈されますが、設計通りですか?
(最初と、次にヒットしたものの)2つしかヒットしたことにならないのはここが原因のように思います。
■2
最初にヒットしたものを出力していないようですが、問題ないのですか?
(もこな2 ) 2020/05/16(土) 10:22
(もこな2) 2020/05/16(土) 10:53
ちなみに、いろんなワードで検索をかけましたが複数の検索値が出ています。
例えば「太田」で検索するとデータベース上の全てのものにヒットしています。(個数は51個)
(pd) 2020/05/16(土) 11:15
> Loop While myObj2<>myObj であれば、そのループ条件。 完全な同値が途中で出てきたら、そこで終わっちゃいます。
Loop While myObj2.Address <> myObj.Address
に換えてみてください。
(半平太) 2020/05/16(土) 11:42
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.