Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11全般 : 指定なし)
VBAのコードから、どのような動作をしているのか教えて下さい
投稿日時: 22/07/30 11:21:10
投稿者: y_0770

お世話になっております。
@ VBAのコードから、どのような動作をしているのかひとつひとつ詳しく確認をしたいです。(大まかには、「ひとつの文章に色付けをする」コードです。)
A センテンスの区切りは「。」以外に、「.」や、「一文字以上の空白(半角や全角)」があります。そちらもセンテンスの区切りとしてみなすコードをお教え頂けると嬉しいです。
 
下記が、コードです。
 
Sub B列の文字列をC列のキーワードでハイライト()
 
    Dim min_rownum As Long
    Dim max_rownum As Long
   
    min_rownum = 5
    max_rownum = Cells(Rows.Count, "B").End(xlUp).Row
   
    Dim i As Long
    For i = min_rownum To max_rownum
        '
        Dim src_text As String: src_text = Cells(i, "B").Text
        Dim chk_text As String: chk_text = Cells(i, "C").Text
        '
        If Len(src_text) > 0 And Len(chk_text) > 0 Then
            '
            Dim lines As Variant: lines = Split(src_text, "。")
            Dim j As Long
            For j = 0 To UBound(lines)
                If InStr(1, lines(j), chk_text) > 0 Then
                    Dim s_pos As Long: s_pos = InStr(1, src_text, lines(j))
                    Cells(i, "B").Characters(Start:=s_pos, Length:=Len(lines(j)) + 1) _
                                 .Font.Color = vbRed
                End If
            Next
            '
        End If
        '
    Next
 
End Sub
 
@Aどちらでも差し支えございません。
ご回答を頂けると有難いです。
お時間を頂きまして申し訳ございませんが、どうぞ宜しくお願い致します。

回答
投稿日時: 22/07/30 12:08:33
投稿者: simple

質問がとても向上してよかったです。
 
(1)については、以下の方法がよいと思います。
「ステップ実行」をご存じですか?
・開発 ‐ マクロ ‐ 実行するマクロを選択して、「ステップイン」を実行します。
・そのあとは、F8キーを押すたびに、一行ずつ実行されます。
(なお、別法として、
  VBEで、当該マクロのどこかにカーソルを置いた状態で、
  F8キーを押してマクロを起動してもよいです。こちらのほうが簡単です)
 
・ローカルウインドウなどで、どのような変数の値になるかを観察したり、
・イミディエイトウインドウで
  ? src_text
  などとして、内容を確認したりできます。
こうした方法が一番です。
頭で想像していくこともできるかもしれませんが、
実際のデータを見ながら確認していくのが具体的で分かりやすいと思います。
 
(2)については、
Dim src_text As String: src_text = Cells(i, "B").Text
としたあとで、

        src_text = Replace(src_text, " ", "。")
        src_text = Replace(src_text, " ", "。")
        src_text = Replace(src_text, ".", "。")
などと置換してしまうのが簡単だと思います。
要するに、マッチした文字列さえ取得できてしまえば、こっちのものです。
上記の置換はセルの文字列には影響しませんから、たぶん目的を果たすことができると思います。
トライしてみてください。

投稿日時: 22/07/30 12:51:01
投稿者: y_0770

simple 様
 
大変お世話になっております。
昨日や過去の質問にもお答え頂きまして、いつも有難うございます…!
 
@とAを試してみました。
お陰様で上手くいきました…!
特にAは素晴らしいです…!
「.」と「一文字以上の空白(半角や全角)」であっても色付けが出来ました!
@も勉強になります。
こちらのコード以外にも、様々なコードで確認してみます。
 
ご回答を頂きまして、心より感謝申し上げます。
お時間を頂戴致しまして、有難うございました…!
次回も是非宜しくお願い申し上げます!