【マクロ・VBA コード・マクロファイルダウンロード可】セル内の特定文字列のフォントを変更するマクロ

アイキャッチ画像 エクセル

セル内の特定文字列のフォントを変更するマクロを紹介します

ダウンロードファイルもありますので良かったら試してみてください

またマクロコードも紹介しています

使用方法解説動画↓

複数のセルの特定文字列フォントは変換できるけど、セル内の文章の特定文字列フォントを複数変換する機能が見つからなかったのでマクロで作成しました

自分が作った文章なら書きながら変換していけばいいが、もうできた文章

同僚・お得意様が作成した文章だとセル内の1つ1つ文字列を選択して変換する必要があり

手間も時間もかかってしまいます

文章の文字数が多ければなおさらです

そこでセル内の特定文字列のフォントを変更するマクロを作成しました

このマクロは以下のことができます

  • 文字の種類・色・サイズ・太文字・イタリック・アンダーバーの変換ができる
  • 文章中の特定文字列の数と割合の算出
  • 文章の文字数の算出
  • 以下の項目を複数の文字列で一括実行する

このマクロを使って、1分でも早く仕事を終わらせましょう

目指せ定時退社!

ダウンロードファイル

ファイルです→セル内の特定文字列のフォントを変更する.xlsm

※インターネットからのマクロは、Office では既定でブロックされますので許可する必要があります

詳細はマイクロソフトが公開してますので参考にしてください →詳細ページ

ファイルダウンロードがちょっと怖いという方はコードをコピペして使ってください

ファイルを開くと黄色タスクバーが出てくるので、「編集を有効にする」を押すと

マクロの許可の画像

今度は赤色のタスクバーがでできます「詳細を表示」を押してもうまく動かせないので
次の操作をしてください

マクロの許可の画像

使いたいファイルの「プロパティ」を開きます

マクロの許可の画像

赤枠の中の「許可する(K)」にチェックを入れて「適用」をクリックしてください

マクロの許可の画像

すると赤枠がなくなるので使えるようになります

マクロの許可の画像

マクロコード

※マクロを入れる場合、EXCELファイルをマクロ形式にしてください

その後、Alt+F11でマクロの画面に移り変わるので、Alt+I+Mを押して

表示した画面にコピペしてください

下の記事にマクロの取り込み方法をまとめたのでよかったら参考にしてください

セル内の特定文字列のフォントを変更する

Sub セル内の特定文字列のフォントを変更する()

'変数//////////////////////////////////////////
Dim wb As Workbook: Set wb = ThisWorkbook 'このbook用変数

Dim ws As Worksheet: Set ws = wb.Sheets("指定の文字列に色を塗る") 'Sheet用変数

Dim T_string As String: 'フォントを変更したい文字列用配列

Dim CT_string: 'フォントを変更したい文字列の文字数

Dim rng As Range: Set rng = ws.Range("B1") '該当文章のRange用変数

Dim T_rng As Range 'フォントを変更したい文字列のRange用変数

Dim c_string: c_string = rng.Characters.Count '該当文章の合計文字数

Dim i, j, c 'カウンター変数

Dim last_r As Long '最終行用変数

'指定の文字列に色を塗る//////////////////////////
last_r = ws.Cells(Rows.Count, 1).End(xlUp).Row '最終行の取得

If ws.Range("A" & last_r) = "文章文字数合計" Then '連続でやり「文章文字数合計」が残ってる場合
    
    ws.Rows(last_r).Delete '「文章文字数合計」の行を削除
    
    last_r = last_r - 1 '最終行を更新

End If

For i = 2 To last_r

    T_string = ws.Range("A" & i) 'フォントを変更したい文字列の代入
    
    CT_string = Len(T_string) 'フォントを変更したい文字列の文字数を代入

    Set T_rng = ws.Range("A" & i) 'フォントを変更したい文字列が入ったセルの代入
    
    c = 0 'カウントの初期化
    
    For j = 1 To c_string '文章1文字目から最後の文字までループ処理
    
        With rng.Characters(j, CT_string)
        
            If .Caption = T_string Then '文章中に該当の文字列があった場合
        
                .Font.Name = T_rng.Characters.Font.Name '文字の種類
                
                .Font.Color = T_rng.Characters.Font.Color '色
                
                .Font.Size = T_rng.Characters.Font.Size '大きさ
                
                .Font.Bold = T_rng.Characters.Font.Bold '太文字
                
                .Font.Italic = T_rng.Characters.Font.Italic 'イタリック
                
                .Font.Underline = T_rng.Characters.Font.Underline 'アンダーバー
                
            c = c + 1 '文字列のカウント
            End If
            
        End With
    
    Next j
    
    ws.Range("B" & i) = c & "個   " & Round((c / c_string) * 100, 1) & "%" '文字列の合計数
     
Next i

ws.Range("A" & last_r + 1) = "文章文字数合計"

ws.Range("B" & last_r + 1) = c_string '文章の文字数を代入

MsgBox "文字変換完了"

End Sub

コメント

タイトルとURLをコピーしました