初めまして。
文字を検索して、その文字が見つかれば文字をドラッグした状態にしたいのですが、どのようにすれば良いのでしょうか?
検索は↓のようにしています。
Private Sub search_Click()
Dim Text As String
Dim FindText As String
Dim Found As Long
'検索する文字
FindText = Text1.Text
'ファイルの読み取りと検索
Text = Form1.txtbox.Text
Found = InStr(sText, sFindText)
'結果
If Found = 0 Then
MsgBox "見つかりません。"
Else
MsgBox "見つかりました。"
End If
End Sub
>Found = InStr(sText, sFindText)
・・・って、変数は宣言されてませんよね?
TextBoxには、SelStartとSelLengthっていうものがあります。
それを使用して、期待する場所の開始位置と長さを指定して、SetFocusで当ててあげて下さい。
実際には
・Foundで算出した文字位置(1引いてやる必要があると思います)が開始位置
・検索する文字の文字列長が長さ
として、指定してやります。
影さん。早速のレスありがとうございます。
>>Found = InStr(sText, sFindText)
>・・・って、変数は宣言されてませんよね?
書き忘れです。すみませんm(__)m
↓を書いてます。
Public Function TextFile_ReadAll(ByVal FileName As String) As String
Dim h As Long
Dim sBuffer As String
On Error GoTo ErrHandle
h = FreeFile
Open FileName For Binary Access Read Lock Write As #h
sBuffer = Space(LOF(h))
Get #h, , sBuffer
Close #h
TextFile_ReadAll = sBuffer
Exit Function
ErrHandle:
Close #h
TextFile_ReadAll = ""
Exit Function
End Function
この場合でも方法は変わりませんよね?
それと、どのようなコードを書けばいいのかよく分からないので、
よろしければ、簡単なコードを書いていただきたいです。
おねがいしますm(__)m
あ、失礼しました。見事に中途半端ですね。
まささんお使いの環境は、恐らくVB.NETじゃないですか?
当方の現環境はVB6.0なので、確認できませんが。
とりあえず、参考までにVB6.0で反転させる方法を記載しておきます。
11時42分のコードから抜粋しますね。
>If Found = 0 Then
> MsgBox "見つかりません。"
>Else
'以下に、反転させる処理を追加します。
txtbox.SelStart=Found-1
'これが、反転させる開始位置です。
txtbox.SelLength=Len(sFindText)
'これが、反転させる長さです。
txtbox.SetFocus
'そして、反転させるためにフォーカスを当てます。
> MsgBox "見つかりました。"
>End If
それから、FoundはLong型で無くても宜しいかと思います。
Integerでも大丈夫でしょう(多分)。
連続レスごめんなさい。
InStrの使い方間違ってました。
>>If Found = 0 Then
>> MsgBox "見つかりません。"
>>Else
これじゃ、開始位置が文字列先頭の場合は見つけてもらえませんね。
正しくはこちらです。
If Found < 0 then
MsgBox "見つかりません。"
Else
でした。ごめんなさい m(_ _)m
ふーむ、参考リンクと。
テキストの選択開始点を取得または設定する
http://jeanne.wankuma.com/tips/textbox/01-selstart.html
テキストの選択文字数を取得または設定する
http://jeanne.wankuma.com/tips/textbox/02-sellength.html
これでは、面倒なので、
テキストの任意の場所を選択状態に設定する
http://jeanne.wankuma.com/tips/textbox/04-select.html
を通常使用します。
あ、良いんだ。先にInStrで1引いてないから。
今試しに作ったサンプルでは、InStr使った時に引いてたんだ。
Found = InStr(sText, sFindText) - 1
っていう状態。
>Found = InStr(sText, sFindText)
今回は、これだったんですよね。0で良いのでした。
重ねてごめんなさい。
# じゃんぬねっとさん
# リンク戴きながら触れませんでした。ごめんなさい。
影さん、じゃんぬねっとさん、ありがとうございました。
無事、検索できるようになりました。
#VBのバージョンを先に言っておくのを忘れていましたm(__)m
#VB6.0 でした。
ツイート | ![]() |