セルの値を合計するマクロ
↓ こちらが面白い。
www.atmarkit.co.jp
中でも、登場人物のこの会話が楽しくて好きだ。
「セルの値を合計するマクロができたぞ……!」
「そういう再発明もたまにはいいですよね」
ということで、私もセルの値を合計するマクロを作ってみた。
この飛び飛びの範囲で、足し算してみよう。
ちなみに、通常であればSUM関数による瞬殺案件だ。
↑ 御覧のように、指定範囲に含まれる文字は無視して、数字だけを加算している。
今回は、数が決まっていない複数の範囲を指定されることを想定し、引数を
可変長にしてみた。
docs.microsoft.com
また、文字を足し算するとエラーになることから、今回はナマクラしてエラーを
無視させてみた(On Error Resume Next)。
Function 合計(ParamArray target_range() As Variant) As Double Dim Area As Variant Dim Cell As Variant On Error Resume Next For Each Area In target_range For Each Cell In Area 合計 = 合計 + Cell Next Next On Error GoTo 0 End Function
本家のSUM関数と同じ結果を返してくれた。今のところ、問題なさそうだ。
ということで、これを職場の勉強会に持ち込んでみたのだが、テーマとして
実は難度が結構高いことが分かった。
- 普段、ParamArrayに馴染みが無い。
- 二重ループは、学び始めの方にはイメージしにくい。
- エラーって無視していいのか。
- 無視しないなら、足していいかをどう確認するか。
- Areasプロパティに話が及ぶ。
- などなど。
結果、中級者を対象とした勉強会のテーマにすると、色々と学ぶことが多くて
面白いかも?と思った次第です。
参考まで。