VBAのMod演算子で余りを求める方法をわかりやすく解説

スポンサーリンク
スポンサーリンク

Modの概要

剰余(余り)演算 VBAの予約語

Mod

概要 Mod 演算子は、VBAで2つの数値を割り算した際の「余り」を求めるために使用されます。

わかりやすく説明 Mod は、「割り算をしたときの余り」を計算する演算子です。例えば、10 Mod 3 の結果は 1 になります(10 を 3 で割ると、余りが 1 )。

  • 2つの数値を割り算した際の「余り」を求める。
  • 整数同士の演算に使用される。
  • 偶数・奇数の判定や、特定の間隔での処理に利用できる。

Modの基本的な使い方

Mod 演算子を使って、2つの数値の余りを求める基本的な例です。

Sub ModExample()
    Dim result As Integer
    result = 10 Mod 3
    MsgBox "10 ÷ 3 の余りは " & result, vbInformation, "Modの例"
End Sub

解説:

  • 10 Mod 3 の結果は 1(10 ÷ 3 の余り)。
  • 計算結果をメッセージボックスで表示。

ExcelでのModの活用例

Excelのセルに入力された値が偶数か奇数かを判定する例です。

Sub CheckEvenOdd()
    Dim i As Integer
    Dim lastRow As Integer
    
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row ' A列の最終行を取得
    
    For i = 1 To lastRow
        If Cells(i, 1).Value Mod 2 = 0 Then
            Cells(i, 2).Value = "偶数"
        Else
            Cells(i, 2).Value = "奇数"
        End If
    Next i
End Sub

解説:

  • A列に入力された数値をチェックし、偶数ならB列に「偶数」、奇数なら「奇数」を表示。
  • 値 Mod 2 = 0 なら偶数、それ以外は奇数。

特定の間隔ごとに処理を実行する

Mod を使用すると、例えば5行ごとに特定の処理を実行できます。

Sub HighlightEvery5Rows()
    Dim i As Integer
    Dim lastRow As Integer
    
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 1 To lastRow
        If i Mod 5 = 0 Then
            Cells(i, 1).Interior.Color = RGB(255, 255, 0) ' 黄色に塗る
        End If
    Next i
End Sub

解説:

  • 5行ごとにセルの背景色を黄色に変更。
  • i Mod 5 = 0 で、行番号が5の倍数のときに処理を実行。

エラーを回避する方法

0で割ろうとするとエラーになるため、エラーハンドリングを追加します。

Sub SafeModUsage()
    Dim num As Integer
    Dim divisor As Integer
    Dim result As Variant
    
    num = 10
    divisor = 0 ' わざと0を設定
    
    On Error Resume Next
    result = num Mod divisor
    
    If Err.Number <> 0 Then
        MsgBox "エラー発生: " & Err.Description, vbExclamation, "エラー"
        Err.Clear
    Else
        MsgBox "結果: " & result
    End If
End Sub

解説:

  • 0で割ろうとするとエラーになるため、On Error Resume Next を使用。
  • エラー発生時にはメッセージを表示し、エラーをクリアする。

Modの注意事項

  • 整数同士でのみ使用可能: Modは整数同士の演算にしか使用できない(小数には適さない)。
  • ゼロ除算エラーに注意: 0で割ろうとするとエラーが発生するため、適切にチェックする。
  • 負の数の扱い: 負の数をMod演算に使うと、結果も負になる可能性がある(例: -10 Mod 3 の結果は -1)。

よくある質問

Q: Mod は小数にも使えますか?
A: いいえ。Mod は整数のみ対応しており、小数の余りを求める場合は WorksheetFunction.Mod を使用する必要があります。
Q: Mod を使って特定の間隔で処理を行うには?
A: If i Mod 5 = 0 Then のようにすると、5の倍数のときに処理を実行できます。
Q: 0で割るとどうなりますか?
A: エラー(ゼロ除算エラー)が発生します。On Error Resume Next で回避可能ですが、事前にチェックするのが望ましいです。
Q: 負の数の Mod の結果は?
A: 負の数を使うと、結果も負になることがあります。例えば、-10 Mod 3 は -1 になります。

まとめ

  • Mod 演算子は、整数の割り算の「余り」を求める。
  • 偶数・奇数の判定や、特定の間隔ごとの処理に便利。
  • Excelのセル処理で特定の行ごとに処理を実行できる。
  • ゼロ除算エラーを防ぐために、適切なエラーハンドリングを行う。