23日目 世界のナベアツの真似をしてみよう【30日間1日1本マクロ生活】
30日間1日1本マクロ生活、23日目です。
マクロを書く準備は、0日目に記事を書きました。
世界のナベアツ
10年くらい前でしょうか。「世界のナベアツ」っていたじゃないですか。
今は落語家になって「桂三度」の名前で活躍しているみたいです。
当時のネタで「3の倍数と3を含む数のときにアホになる」というのが大ブレイクしたんですよね。
今日はその真似をします。「3の倍数と3を含む数のときに赤になる」です。
さっそくコードを
Function san(n)
ans = False
If n Mod 3 = 0 Then ans = True
If n Mod 10 = 3 Then ans = True
If Int(n / 10) = 3 Then ans = True
san = ans
End Function
Sub 三の倍数と差を含む数のときに赤()
For Each c In Range(Cells(1, 1), Cells(8, 5))
If san(c.Value) Then
c.Interior.ColorIndex = 3
End If
Next c
End Sub
解説します。
Function san()
前半の「Function san(n)」で、nが3の倍数か3を含む数であるかを判定しています。
ansにははじめは「False」つまり「ちがうよ」という答えを入れておきます。
nが3の倍数のとき、ansに「True」つまり「そうだよ」という答えを入れます。
nが10で割って3余る数、つまり1の位が3のとき、ansに「True」を入れます。
nを10で割った整数部分、つまり10の位が3のとき、ansに「True」を入れます。
以上の操作により、3の倍数、1の位が3、10の位が3のときには「True」、そうでなければ「False」のままになります。
最後にsanの答えとしてansを返します。
Sub 三の倍数と差を含む数のときに赤()
A1からE8のすべてのセルcについてループです。
cの値をオリジナル関数のsanにいれて、3の倍数か3を含む数かを判定します。
「If san(c.Value) Then」は、「san(c.Value)がTrueならば」という意味です。
「c.Interior.ColorIndex = 3」は、cのInteriorのColorIndexを3にする、です。
「Interior」は背景、つまりセルの背景についてです。
「ColorIndex」は、Excelにあらかじめ登録されている色の番号です。3は赤です。
実行結果
マクロを記述するウィンドウの「Sub」と「End Sub」の間にカーソルを置いて、画面上方の再生ボタン的なアイコン(右向きの三角形)をクリックするか、[F5]キーを押して実行します。
みごとに3の倍数か3を含む数のときにアホ、いや、赤になりました。
Excelは便利
悔しいですが、Excelは便利です。
Microsoftにお金を払うのは癪でしょうがないんですが、Excelばかりは仕方がない。
マクロを書くようになると、Excelからは離れられないですね。
30日間、頑張ります。