外部ソフトウェアが完全ブロックされた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を押すと表示できるイミディうんたらウィンドウに出力される感じだな。
…とまあ、これによって、長文うざいといった文句は解消できたんじゃないか、とは思うが、いくら小さかろうとどうにもならない文量だった場合(そもそも小さくしすぎて見えなかったら意味がないため限度もあるので)、シンプルにまとめよといったことを、やっぱ教えないといけないんだろうか。うーん…こういうのってわざわざ教えるもんかね。
もしくは字数制限するかだが、そうすると本来の業務連絡共有ツールとして、本末転倒だ。
ま、ひとまず今回はこれでいいとして、あとのことは適当にあとから考えるとしよう。