リッチテキストボックスに文章を入力して、”その文章に全角が含まれていたら全角文字だけ色を付ける”プログラムを作成しようとしているのですが、色の付け方とロジックが分かりません。どなたかご教授ください。
現在できているものは、何文字目の何という文字が全角か?ということだけです。(趣旨が異なりますが・・)これをリッチテキストボックス上で全角文字に色を付けたいのですがご解答お願いします。
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
漢字は識別できているようなので、全角を選択して(SelStart・SelLength)
選択した範囲に対して
RichTextBox1.SelColor = RGB(255, 0, 0)
で色つきませんか?
ななし様、早速の返信ありがとうございます。
早速やってみたのですが、色が付きませんでした。
---------
MsgBox iNum & "番目の" & "「" & (Mid(Value, i, 1)) & "」" & "という文字が全角です"
RichTextBox.SelLength = iNum
RichTextBox.SelStart = iNum
RichTextBox.SelColor = RGB(255, 0, 0)
---------
この書き方ではだめなのでしょうか?
VB超初心者ですみませんがよろしくお願いいたします。
> RichTextBox.SelLength = iNum
> RichTextBox.SelStart = iNum
逆っぽい
RichTextBox.SelStart = iNum
RichTextBox.SelLength = iNum
SelStartが先です。
ついでに
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文字分選択
こんな感じ
ななし様、ありがとうございました。
大変ご丁寧な対応で感激しております。
また、勉強して困ったらこちらの掲示板を利用させていただきます。
ツイート | ![]() |