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日間、頑張ります。