アプリ版:「スタンプのみでお礼する」機能のリリースについて

教えてください。
テキストボックスの内容を読み込んで、指定した文字列を検索するというコードを書いているのですが、

jl = InStr(i, Text2.Text)
If (jl > 0) Then

のように、テキストを一行ずつOpen~で読み込んで、Instrで指定した文字があるかどうかを判定しています。

これでは、検索した文字があったかどうか、という判定はできますが、検索あるいは置き換えした文字がどれであるか、またトータル何件あったかが分かりません。

検索ならば、一つずつ対象文字を発見したときにその文字の場所で止めて、またその文字の色を変える方法が分かりません。
また、置き換えならば、全文対象に一気に置き換えて、その置き換えた文字の色を変えて分かりやすくしたいのですが、その方法が分かりません。

検索あるいは置き換えの方法はマニュアルにあるのですが、その場所で止めて色を変えるというコードがなかなか載っていません。

どなたか教えてくださいませ。
お願いいたします。

A 回答 (2件)

テキストボックスの一部分の文字の色を変える、ということは不可能です。


(テキストボックスだけで実現するのは)諦めてください。

Text1.SelStart = 15
Text1.SelLength = 4
Text1.SetFocus

ただし、こんな風に、任意の部分だけを選択状態にするという手があります。
(上の例では、15文字目から4文字分が選択されます)
テキストボックスなら、これが理想的だと思います。

どうしても一部分だけの色を変更したい場合は、
リッチエディットで無理やり実現させるか、
自前で、独自のテキストボックスのようなものを作成するしかないと
思います。

後者の方法が一般的ですが、VBでは現実的ではない方法です。
また、前者は大変面倒です。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

Text1.SelStart = 15
Text1.SelLength = 4
Text1.SetFocus

この例では15文字目から4文字分が選択される、とありますが、
その何文字目から何文字までが検索の対象文字列であるのかという
ことは検索する文字列によって変わってくると思うのですが、
どのように指定してやればいいのでしょうか?

初心者ですみません・・・。

お礼日時:2002/04/06 19:18

>Text1.SelStart = 15


>Text1.SelLength = 4
>Text1.SetFocus
>
>この例では15文字目から4文字分が選択される、とありますが、
>その何文字目から何文字までが検索の対象文字列であるのかという
>ことは検索する文字列によって変わってくると思うのですが、
>どのように指定してやればいいのでしょうか?

InStr関数を使われてはどうでしょう?
文字列を検索して最初に見つかった位置を返しますので、
その位置と文字列長さえあれば、選択状態にするのも簡単ですよね。
使用方法はMSDNに書かれています。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。うっかり見落としていました。Instrは位置を返すんですね。ということは、その位置から「検索対象文字列」の長さを調べて、その文字数分を選択すればいいんですね。

バッチリとはいえませんが、試行錯誤しながらならなんとかできそうな気がしてきました。
やってみます。
ありがとうございました!!!

お礼日時:2002/04/06 23:57

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