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

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

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

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

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

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

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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qテキストファイルから1文字ずつ取り出し、ワードの表に1文字ずつ書く方法

ワードのファイルをもらいました。
その一部が原稿用紙風になっています。具体的にはページの下の方に15×15の表が作ってあります。上の方は普通の文章です。
また、これとは別に、事前に作ってあるテキストファイルがあり、ここから1文字ずつこのセルへ書き写していきたいのですが、なにか便利な方法はありませんか。

Aベストアンサー

お世話になります。

本格的にやるとしたら、Word VBA とか VSTO なんでしょうけども。
そんなに量が多くないとか定常的な作業でないのであれば、
手でやる時間 < 勉強してプログラムを動かすまでの時間
だと思います。

手で楽にやる方法としては。
Text ファイルの項目数が Word の表の項目数とあうようにしておいて、
項目間の区切りをタブ区切りにします。
例えばこんな Text ファイル(tab と改行は読み替えて下さい)
aaa(tab)bbb(tab)ccc(改行)
aaa1(tab)bbb1(tab)ccc1(改行)
aaa2(tab)bbb2(tab)ccc2(改行)

それで上記 3 行を
Control キー + C キーでコピーして、
Word 上の 3 × 3 の表全体(左上の上下左右の矢印をクリック)を選択して
Control キー + V キーで貼り付けます。

参考URL:http://www.moug.net/skillup/pmm/dn01-2.htm

QFOR文でtext1,text2,text3...などとどうやって処理させればいいのですか

超初心者な質問ですみません。
たとえばFOR文を使ってtext1~10まで連続に処理させるには
どういったコードを記述すればよいのでしょうか?
初心者用の本やHPを探しても見当たりませんでした。
お願いします。

Aベストアンサー

textエリアをインデックス配列にすればいいです。
Text1のエリアをファーム上でコピーし、貼り付けると
Text1(0)~ Text1(9) の配列になります。
それを
 
(例)

i =0
for i=0 to 9
text1(i) = x
next

のようにすればいいです。

Q文字の置き換えについて

こんばんは。

「伊集院さんを探しています。」という文字列にある「伊集院さん」を「中さん」に置き換えようとしています。midステートメントでいろいろと試しているですが、上手くいかず悩んでいます。
どうしても「中さんさんを探しています。」となってしまうんです(苦笑)

どうかアドバイスをいただけないでしょうか。よろしくお願いします。
返信は必ずさせていただきます。

Aベストアンサー

VB6なら、Replace関数を使えば簡単に置換えれます。

Qテキストボックス内の文字の置き換え

編物用の洋書を日本語に変換するものを作っています

文字を置き換えするときに
aaを11に
aaaaを2222に置き換えたいのですが

Str = RichTextBox1.Text
RichTextBox2.Text = str.Replace("aa", "11").Replace("aaaa", "2222")

と書くと aaaaが1111に置き換えられます

RichTextBox2.Text = str.Replace("aaaa", "2222").Replace("aa", "11")

と書けばよいのですが、置き換える単語は、もっと沢山あって・・・・

完全一致の単語を置き換えるという書き方は、有るのでしょうか?
あれば、是非教えてください

よろしくお願いいたします

Aベストアンサー

正規表現オブジェクトを使う方法があります。
応用範囲が広く、覚えておくと便利です。

Function 置換(ByVal 文字列 As String)
Dim R
Set R = CreateObject("VBScript.RegExp")
R.Pattern = "\baa\b"
文字列 = R.Replace(文字列, "11") '1回目の置換
R.Pattern = "\baaaa\b"
置換 = R.Replace(文字列, "1111") '2回目の置換
End Function

単語とあるので、aaaaやaaの前後には空白などの境界があると
判断しました。正規表現中の\bはその意味です。
もし、"aa"と"aaaa"(前後に空白などがない)のであれば、
正規表現を"^aa$"とします。

正規表現オブジェクトは下記参照
http://msdn.microsoft.com/ja-jp/library/cc392487.aspx
正規表現の構文は下記参照
http://msdn.microsoft.com/ja-jp/library/cc392020.aspx

正規表現オブジェクトを使う方法があります。
応用範囲が広く、覚えておくと便利です。

Function 置換(ByVal 文字列 As String)
Dim R
Set R = CreateObject("VBScript.RegExp")
R.Pattern = "\baa\b"
文字列 = R.Replace(文字列, "11") '1回目の置換
R.Pattern = "\baaaa\b"
置換 = R.Replace(文字列, "1111") '2回目の置換
End Function

単語とあるので、aaaaやaaの前後には空白などの境界があると
判断しました。正規表現中の\bはその意味です。
もし、"aa"と"aaaa"(前後に空白などがない)のであれば、
...続きを読む

Qテキストボックの文字を一行ずつ読み込む

こんにちは。
VB6.0にてフォーム上のテキストボックスの文字列を1行ずつ読み込んで処理し、別のテキストボックに書き出したいのですが、1行ずつ読む方法が分かりません。(テキストファイルなら出来るのですが)

何方か方法をご存知ないでしょうか。
宜しくお願いします。

Aベストアンサー

ちょっと、致命的なミスをしていましたので訂正します。

Private Sub Command1_Click()
  Dim I    As Integer
  Dim strText As String
  Dim strTexts(1) As String
  
  Me.Text1(1).Text = ""
  If Len(Me.Text1(0).Text & "") > 0 Then
    strTexts(0) = Me.Text1(0).Text
    Do
      I = I + 1
      strText = CutStr(strTexts(0), vbCrLf, I)
      If strText <> "" Then
        strTexts(1) = strTexts(1) & strText & vbCrLf
      End If
    Loop Until strText = ""
    Me.Text1(1).Text = Left(strTexts(1), Len(strTexts(1)) - 1)
  End If
End Sub

フォームのテキストボックスからの読み込みと書き込みは最小ステップにするべきでした。

ちょっと、致命的なミスをしていましたので訂正します。

Private Sub Command1_Click()
  Dim I    As Integer
  Dim strText As String
  Dim strTexts(1) As String
  
  Me.Text1(1).Text = ""
  If Len(Me.Text1(0).Text & "") > 0 Then
    strTexts(0) = Me.Text1(0).Text
    Do
      I = I + 1
      strText = CutStr(strTexts(0), vbCrLf, I)
      If strText <> "" Then
        strTexts(1) = strTexts(1) & strText & vbCrLf
 ...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報