15年前に書いたマクロ
ふとした偶然から、私が15年ほど前に書いたマクロが目に留まった。
恐ろしいことに、今も使われているらしい。恥を忍んで、ここに再現しよう。
Sub 全角文字変換() Dim 全角文字 As String Do Until ActiveCell.Value = "" 全角文字 = ActiveCell.Value 全角文字 = StrConv(全角文字, vbWide) ActiveCell.Value = 全角文字 ActiveCell.Offset(1, 0).Activate Loop End Sub
ちなみに、「半角文字変換」も存在する。字下げも何もしていない。アクティブなセルから、わき目も降らず真下に降りていきながら、手あたり次第に全角化していく。そして、空白セルがあれば「ガツン」と止まる。40年近く前のチョロQを彷彿とさせる、直向な動き。わが作品ながら、少し気に入っている。
ところでこの、「今も使われている」が、実は厄介っかいだったりする。コッソリ直して、例えば空白セルがあっても乗り越える作りにすると、ユーザーにとっては「想定外の動き」になる。例えそれが、良かれと思っての改修だとしても。
そこで現在の動きを変えずに、リニューアルしてみた。
Private Property Get TargetRange() As Range Set TargetRange = Range(ActiveCell, ActiveCell.End(xlDown)) End Property
Function 文字幅変換(Optional wide_type As VBA.VbStrConv = vbWide) As Variant Dim arr As Variant arr = TargetRange Dim i As Long For i = 1 To TargetRange.Rows.Count arr(i, 1) = StrConv(arr(i, 1), wide_type) Next 文字幅変換 = arr End Function
Sub 全角文字変換() TargetRange = 文字幅変換 End Sub
Sub 半角文字変換() TargetRange = 文字幅変換(vbNarrow) End Sub
こんな改造が行われたなど、隣に座っているユーザーは知る由もない。
今日はちょっとだけ、とてもとてもほんの少しだけ、墨子の気分かも。
business.nikkei.com
参考まで。