ボロボロ皇帝のボロ切れと塊

ボロボロ皇帝が悪態、嫌み、好み、何でも己の視点だけで自由に吐く「偏」な場所。たまにExcel、家電、音楽等についても好きに吐いてる。

ボロボロ皇帝が悪態、嫌み、好み、何でも己の視点だけで自由に吐く「偏」な場所。
Excel、家電、音楽、ゲームイラスト小説映画、性癖について等、何でも好きに吐いてる。

どうでも良いかもしれんが背景色変わっていくの見てくれ。
更にどうでも良いかもしれんがアイコンが息してるの見てくれ。


我輩は何にも制約されない身、
「耐えぬ」事を恐れないと決めたのだ!
我輩は好きなときに悪態をつく!
妬み僻み嫉みを背負い、
マイナーだろうが邪道だろうが
我輩は我輩の道を行く!
好きなものは懸命で不器用な諸君,
嫌いなものは器用で完璧を気取った奴らだ。
         

【Excelマクロ・VBA】文字数カウントして一定数以上であればフォントサイズ変更 ~長文判定、見にくいから小さくする~

 

外部ソフトウェアが完全ブロックされたWin11入れ替え以降、社内では我輩が自力で作成したほぼExcelメッセンジャーソフトを使っているわけだが、最近こんな声が上がってきた。

 

パート社員U氏の文量多すぎて邪魔くさい。

 

まあたしかに文量、多いな、とは思う。なんかようわからんが、まとめられないと言ってるんだと。まとめてくれや、業務内容くらい

もうちょい簡潔に、という指導はあとにするとして(長引くこと間違い無しなため)、ひとまずこの邪魔くさい、というのを物理(というかデータ)的に対処しようと考えた。

となれば、方法は一つしかない

文字数をカウントして、一定数以上であればフォントサイズを下げる

である。

 

当初条件付き書式でイケるんかと思ったが、条件付き書式はフォントとフォントサイズを変更できなかった。グレーアウトしてるんでなんでや、と思ったら、そういうもんらしい。今回初めて知ったぞ。

 

というわけなのでLen関数を使ったVBAで判定させることに。

Len関数 とは文字数カウント呪文

以下がそれ↓

Private Sub Worksheet_Change(ByVal Target As Range)

 

If Target.Column = 2 And Target.Row > 1 And Len(Target) >= 150 Then

Target.Font.Size = 10.5

Else

Target.Font.Size = 12

End If

 

End Sub

 

非常に単純だが、こんな感じで条件分岐させるわけだな。

 

ざっくり説明すると、

もし、

Target.Column = 2 B列 且つ、

Target.Row > 1 1行目よりあと 且つ、

Len(Target) >= 150 150文字以上

の条件に一致する場合

つまり、B2以上に入力された文字列が150文字以上だったら

真、フォントサイズ10.5

じゃなかったら、

偽、フォントサイズ12

となるのである。

 

これを応用して、例えばC3よりあとの行で100字以上を条件フォントサイズを反映させたいなら、

If Target.Column = 3 And Target.Row > 2 And Len(Target) >= 100 Then

もしくは、

If Target.Column = 3 And Target.Row >= 3 And Len(Target) > 99 Then

が条件部分となる。

 

ちなみに、150文字以上としてはいるが、改行の関係か、こちらの環境ではWord等でのカウント文字数と比較して結構プラスでズレた(誤差3~40字前後※空白行の関係かもしれんが)。

なので実際の文字数より多めで字数は決めている

 

上記コードを入れるのはシートモジュール内チェンジイベントで動くようにすることでリアルタイムに判定する仕組みになっている。

 

Len関数を単独で使用したい場合は、

Sub tes()

Debug.Print Len(Range("B2"))

End Sub

こんな感じでどうぞである。

B2内の文字列をカウントし、結果はVBエディター画面上でCtrl+Gを押すと表示できるイミディうんたらウィンドウに出力される感じだな。

 

…とまあ、これによって、長文うざいといった文句は解消できたんじゃないか、とは思うが、いくら小さかろうとどうにもならない文量だった場合(そもそも小さくしすぎて見えなかったら意味がないため限度もあるので)シンプルにまとめよといったことを、やっぱ教えないといけないんだろうか。うーん…こういうのってわざわざ教えるもんかね。

もしくは字数制限するかだが、そうすると本来の業務連絡共有ツールとして、本末転倒だ。

 

ま、ひとまず今回はこれでいいとして、あとのことは適当にあとから考えるとしよう。