全角文字だけ色をつけるには?

解決


難解VB  2005-07-06 18:04:12  No: 90864

リッチテキストボックスに文章を入力して、”その文章に全角が含まれていたら全角文字だけ色を付ける”プログラムを作成しようとしているのですが、色の付け方とロジックが分かりません。どなたかご教授ください。
現在できているものは、何文字目の何という文字が全角か?ということだけです。(趣旨が異なりますが・・)これをリッチテキストボックス上で全角文字に色を付けたいのですがご解答お願いします。

Private Sub CheckButton_Click()
    Dim sText As String
    sText = RichTextBox.Text
    
    Dim bolX As Boolean
    X = IsMultiByte(sText)
    
    If X = True Then
        MsgBox "全角が含まれています。"
    Else
        
        If Len(Str1) = 0 Then
             MsgBox "文字が入力されていません"
        Else
            MsgBox "半角だけの文章です。"
        End If
    End If
    
End Sub

'一文字ずつ取り出し半角or全角をチェック
Private Function IsMultiByte(Value As String) As Boolean
    
    Dim i
    Dim iAscCode
    Dim iCount
    Dim iNum
    
    If Len(Value) = 0 Then
       funcLenB = 0
       Exit Function
    End If
 
    '1文字ずつ処理
    For i = 1 To Len(Value)
        iCount = iCount + 1
    '1文字の文字コード取得
        iAscCode = Asc(Mid(Value, i, 1))
   
    If Len(Hex(iAscCode)) > 2 Then
        iCount = iCount + 1
        IsMultiByte = True
        iNum = i
        MsgBox iNum & "番目の" & "「" & (Mid(Value, i, 1)) & "」" & "という文字が全角です"
        
    End If
    Next
    
End Function


ななし  2005-07-06 21:11:51  No: 90865

漢字は識別できているようなので、全角を選択して(SelStart・SelLength)
選択した範囲に対して
RichTextBox1.SelColor = RGB(255, 0, 0)
で色つきませんか?


難解VB  2005-07-06 22:40:28  No: 90866

ななし様、早速の返信ありがとうございます。
早速やってみたのですが、色が付きませんでした。
---------
        MsgBox iNum & "番目の" & "「" & (Mid(Value, i, 1)) & "」" & "という文字が全角です"
        RichTextBox.SelLength = iNum
        RichTextBox.SelStart = iNum
        RichTextBox.SelColor = RGB(255, 0, 0)
---------
この書き方ではだめなのでしょうか?
VB超初心者ですみませんがよろしくお願いいたします。


ななし  2005-07-06 22:44:04  No: 90867

>        RichTextBox.SelLength = iNum
>        RichTextBox.SelStart = iNum

逆っぽい
        RichTextBox.SelStart = iNum
        RichTextBox.SelLength = iNum

SelStartが先です。


ななし  2005-07-06 22:51:51  No: 90868

ついでに
RichTextBox.SelStart = iNum
RichTextBox.SelLength = iNum
のSelLengthは「選択するテキストの文字数の設定」の設定なので
SelStartと同じ変数を使うのはまずいと思います。

EX:
RichTextBox.SelStart = 50
RichTextBox.SelLength = 50
50文字目から50文字分選択

RichTextBox.SelStart = 50
RichTextBox.SelLength = 1
50文字目から1文字分選択

こんな感じ


難解VB  2005-07-06 22:58:41  No: 90869

ななし様、ありがとうございました。
大変ご丁寧な対応で感激しております。
また、勉強して困ったらこちらの掲示板を利用させていただきます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加