• ベストアンサー

テキストの文字列検索で、検索した文字の色を変える方法は?

yuizuianの回答

  • yuizuian
  • ベストアンサー率42% (103/245)
回答No.2

>Text1.SelStart = 15 >Text1.SelLength = 4 >Text1.SetFocus > >この例では15文字目から4文字分が選択される、とありますが、 >その何文字目から何文字までが検索の対象文字列であるのかという >ことは検索する文字列によって変わってくると思うのですが、 >どのように指定してやればいいのでしょうか? InStr関数を使われてはどうでしょう? 文字列を検索して最初に見つかった位置を返しますので、 その位置と文字列長さえあれば、選択状態にするのも簡単ですよね。 使用方法はMSDNに書かれています。

fujiyama2002
質問者

お礼

ご回答ありがとうございます。うっかり見落としていました。Instrは位置を返すんですね。ということは、その位置から「検索対象文字列」の長さを調べて、その文字数分を選択すればいいんですね。 バッチリとはいえませんが、試行錯誤しながらならなんとかできそうな気がしてきました。 やってみます。 ありがとうございました!!!

関連するQ&A

  • 含まれる文字列の検索

    ソースコードに「<title></title>」が含まれているhtmファイルを見つけるために、「スタート」→「検索」→「含まれる文字列の検索」に「<title></title>」を指定して検索しても、そのhtmファイルがヒットしません。 同じフォルダーをWin2000で同じ方法で検索するとヒットします。 「含まれる文字列の検索」の検索対象について何か設定があるのでしょうか?

  • アクセス2000で文字列に文字を挿入する方法。

    InStr関数で、特定の文字(例えば、;)を探して、Mid関数を使って、その文字を特定の文字(例えば、【)に置き換えることには成功しました。 しかし、「;」を「【第」に置き換えようとすると必要なデータまで消してしまいます。「【」は置き換えでよいとしても、「第」は挿入する必要があるのですが、どのようなコードを使えばいいのでしょうか?

  • Photoshopで、テキストの色を一文字ずつ変えたい

    こんにちは。Windows XPでPhotoshop 5.0Jを使っています。 テキストの色を一文字単位で変えたいのですが、簡単にできる方法はありますでしょうか? テキストボックスで文字を入力する段階では、カラーは一つだけしか指定できず、全体がその色になってしまいますし、テキストボックスを閉じ、画面に文字が現れた状態でも、ワードなどのように後から一文字一文字に色を指定することはできませんよね。 一文字テキストボックスで打ち、赤に指定して確定、 つぎにもう一文字打って、今度はオレンジに指定して確定……というのを繰り返していけば確かにできないことはないでしょうが、何せ面倒です。位置もずれてしまいそうですし。 何かよいアイディア・テクニックをご存知の方がいたら、ぜひ教えてください。

  • メモ帳のような文字列検索

     リッチテキストを使ってVBの勉強用にMDIテキストエディタを作っています。  今、文字列の検索と置換部分を作っているのですが、このときメモ帳の検索で使うようなものはどうやって作ればいいんでしょうか。  つまり、検索用のフォームを出したまま、テキスト部分を選択状態(色を反転させた状態)にさせたり、下から上への検索をしたいのですが出来ません。  一応、リッチテキストのFind、もしくはInStr関数を使って、上から下への簡単なものは出来ているのですが、下から上には検索できませんし、検索した後フォーカスをリッチテキストにしなければ、検索した文字列が選択状態にさせられません。  下から検索させるにはInStrRev関数があることは分かったのですが、これだとFindでは出来る『完全一致する単語のみ検索』などが使えなさそうです。  まぁ、これは特にどうでもいいのですが(バイナリモードにすれば大文字小文字の区別は出来ますし)、検索用フォームを手前にさせることはどうやっても出来ません。  色々なサイトにある、『常に手前にフォームを表示』というものも見つけたのですが、これをやっても上手くいきませんし、一旦リッチテキストにフォーカスを移してから再び検索用フォームにフォーカスを移しても選択状態は消えてしまいます。  どうにかして、Findと同等に下から上へと検索させたり、検索用のフォームを手前にさせたまま続けて検索させるということをさせたいのですが、その方法があれば教えてください。 --------- 開発環境 VB6.0SP5 WinME

  • エクセルVBAで特定文字列の個数を高速に調べたい

    文字列の入っている変数内で特定の文字列(今回はvbCrLf)が何個発生しているかを、高速に調べたいのですが、どのような方法があるでしょうか? 現在以下のことをやっています。 数千件のテキストファイルから特定文字列を検索しています。 検索を高速化するために、テキストファイルをバイナリーモードで1つの変数に読み込み、instr関数で検索しています。 見つかった場合、その位置から前にあるvbCrLfをInStrRev関数で、後ろにあるvbCrLfをinstr関数で位置を調べ、元の変数からmid関数で該当ラインを取り出しています。 検索はこれで可能ですが、特定文字列を調べたinstr関数の戻り値がテキストファイルの先頭からの位置(何桁目)なので、検索した文字列が何行目にあるか分かりません。 変数の検索文字が見つかった位置までの部分でvbCrLfが何個発生しているかが分かれば行数が判定できます。 vbCrLfを調べるinstr関数を何回も繰り返せば行数の判定は可能ですが、もっと高速に(一つの関数・命令で)調べることはできないでしょうか? また他に行数を特定する良い方法があったら教えてください。 よろしくお願い申し上げます。

  • 検索結果をテキストに保存

    指定したフォルダから指定した文字列を全文検索する事ができると思いますが、 その結果一覧をテキストで保存したいです。 保存したい内容 ・ファイル名 ・フォルダのパス ・更新日時 そのような事ができるコマンドやフリーソフトはありますでしょうか。 ワード・エクセルも検索対象にしてくれるものが良いです。 よろしくお願い致します。

  • 文字列検索で・・・

    Instr関数で文字列の存在チェックを行っています。 この場合、変数indexに1が入った場合 Instr("aaa1_a.sql","index") <----- この場合問題はないのですが、 Instr("aaa12_a.sql","index") <-----となる場合も値がとれてしまうので どうしたものかと困っています。 うまく検索させる方法はないでしょうか? ちなみに検索する文字列には aaa数字.sql aaa数字_a.sql aaa数字_b.sql というパターンがあります。 どなたかよきアドバイスをいただけませんでしょうか? よろしくお願い致します。

  • 文字列の括弧について(初心者)2

    文字列の括弧について(初心者) http://oshiete1.goo.ne.jp/kotaeru.php3?q=1110818 の質問の続きなのですが、 文字列の中で( )を1セットで使う方法を教えてもらったので自分の使用するプログラムに少し直したのですが、やはり2つ以上の括弧(カッコ)にも対応しなければならなくなりました。 どのようなプログラムになるのでしょうか? 私はInstrは文字列を左からよんでいって最初にある指定した文字(下記の例だと"("など)の場所を何文字目か示してくれるだけなので1つの括弧にしか対応できないと考えています。 なので文字列の中に指定した文字が何個含まれているか調べて、それぞれ何文字目か示してくれるプログラムが あればできると考えています。 どうか教えてください、おねがいします。 ↓今のプログラム Dim bucketL as Long Dim bucketR as Long Dim a as String Dim b as String a=Text1.text bucketL = InStr(a, "(") bucketR = InStr(a, ")") If bucketL < bucketR And bucketL * bucketR <> 0 Then Text2.text = "OK" End If

  • VB2008 テキストボックス内文字検索と置き換え

    テキストボックスの先頭5文字目から2文字に特定の文字があるか探し出して、特定文字があるならその行の後ろに文字をコピーして置き換え。 検索文字があっても無くても空白行の次の行になったら同様の処理を行う。 こういう処理をするにはどのようにすればいいでしょうか? 例) 特定の文字:ef 置き換えする内容:ef→いーえふ <テキストボックスの内容> abcdefgh ijklmnop qrstuvwx yzABefEF GHYJKLMN OPQRefUV <検索して置き換えた後> abcdefgh いーえふ ijklmnop qrstuvwx yzABefEF GHIJKLMN OPQRefUV いーえふ どなたかご教授ください。 よろしくお願いします。

  • vbsでテキストファイル内の文字列検索

    初心者です。 テキストファイルを指定し、含まれる文字列を検索し、 結果表示したいと考えております。 色々探して、以下で作成したのですが、 うまく動いてくれません。 出来ましたら、テキストファイルの中の文字列の 一部分を指定して動作させたいと思っております。 どなたかご教示のほど宜しくお願い致します。 ---------------------------------------------------- Set WSHFso = CreateObject("Scripting.FileSystemObject") Set WshShell = WScript.CreateObject("WScript.Shell") Dim strSearchWord Set tmpFile = WSHFso.OpenTextFile("C:\AAA.txt") Do Until tmpFile.AtEndOfStream tmpLine = tmpFile.ReadLine strSearchWord = strSearchWord & tmpLine & vbcrlf Loop Dim SearchWord SearchWord = split(strSearchWord," ") if InStr(SearchWord(ix), "test")<>0 then WScript.Echo " testを含みます。" else WScript.Echo " testを含みません。" end if ----------------------------------------------------