This page gently shows beginners how to use the Mod operator in Excel VBA to get the remainder of a division and to build simple periodic logic, such as checking even or odd numbers or running code every few times.
Excel VBA の Mod 演算子を使って、割り算の余りを求めたり、偶数・奇数判定や「何回ごとに実行する」といった周期的な処理を組み立てるための考え方と書き方を、はじめての人にも伝わるようにやさしくまとめたページです。
Modは、一言で言うと、「割り算をしたときの余りを求めるための計算記号(演算子)」です。例えば、あなたがクッキーを 7枚持っていて、それを 2枚ずつ友達に分けたいとき、全部で何回分けられるか考えて、最後に余るクッキーが何枚になるかを知りたいとします。この「最後に余るクッキー」を計算するのが Modの役割です。
シンプルな例で考えてみましょう。
VBA で Mod を使うときの基本形は、次のようになります。
VBA
結果 = 数値1 Mod 数値2
「右側の 数値1 Mod 数値2 を計算して、その答え(余り)を左側の 結果 に入れる」というイメージです。例えば 結果 = 7 Mod 2 と書けば、結果 には「1」が入ります。
Excel VBAでは、この Modを使ってプログラミングの中で計算ができます。たとえば、特定の行動を一定の周期で繰り返したい時や、何かを均等に分けられなかったときの処理を書くときに便利です。
ひとつだけ気をつけたいのは、「0 で割ってはいけない」という点です。例えば 10 Mod 0 のように 0 を使うと、VBA では「実行時エラー '11'(0 で除算しました)」というエラーになってしまいます。
また、負の数を使ったときの挙動も少しだけ独特です。ふつうに正の整数だけで使う分には気にしなくてかまいませんが、「マイナスの値を含む複雑な計算」に使う場合は、結果の符号(プラス/マイナス)が期待どおりかどうかをデバッグプリントなどで確認するのがおすすめです。
例えばこんなコード。
VBA
If i Mod 2 = 0 Then
' iが2で割り切れる(偶数の)時の処理
Else
' iが2で割り切れない(奇数の)時の処理
End If
このコードは、「もし i が 2 で割り切れるなら(つまり偶数なら)、ある処理をする。そうでない場合(奇数なら)、別の処理をする」という意味になります。
Modはとてもシンプルですが、プログラミングで様々な場面で役立ちます。例えば、周期的な処理の必要がある時や、何かを分配してその余りを知りたい時など、実生活の問題を解決するのに使える便利なツールです。この「余りを求める」概念は、日常生活で自然と使っているものですから、Excel VBAで Modを使うのも、それほど難しいことではありません。
結果 = 7 Mod 2 のように、式の中で使います。ワークシート関数の MOD とは見た目が似ていますが、VBA では関数ではなく演算子として扱われます。\ を使います。商と余りの両方が欲しい場合は、商 = a \ b と 余り = a Mod b の 2 行を書くのが簡単です。If i Mod 10 = 0 Then と書けば、「10 回ごとに実行する」という条件になります。a Mod 0 のように 0 を使うと、「実行時エラー '11'(0 で除算しました)」が発生します。割る数(右側)は必ず 0 以外の値を指定してください。a Mod 0 のように、割る数として 0 を指定している。Long 型にしておくなどして、範囲外の値にならないようにする。CLng や CDbl などで数値に変換するか、入力チェックを行う。