mod関数の使い方」という検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あることに気づきました。Excelのワークシート関数には、割り算をしたときの余りを求めるMOD関数があります。B1)」という数式を入力すると、5を2で割った余りの「1」がC1セルに計算されます。Applications)の関数を探していたのでしょうか。Range("B1").Value)といったコードを入力したものの構文エラーとなるので、どうすればいいのかを探していたのかもしれません。[スポンサードリンク]VBAにはMod関数はないこの検索キーワードに対して、まずは杓子定規にお答えすると、MODという名前の関数はVBAには存在しません。Editor)に付属するオブジェクトブラウザーで、ライブラリーを「VBA」にして、[クラス]ペインで「グローバル」を選択したときに、[メンバー]ペインに表示されるのが、VBAの関数です。ここで「mo」ではじまるメンバーを探しても、下図のとおりModという名前は見当たりません。オブジェクトブラウザーで非表示のメンバーを表示しても同じです。VBAにはMod関数は存在しないということです。WorksheetFunctionオブジェクトにもMod関数はないExcelマクロの経験がある程度ある方だと、WorksheetFunctionプロパティでWorksheetFunctionオブジェクトを取得することで、VBAからワークシート関数を使えることをご存知でしょう。このことをご存知の方だと、VBAにMod関数がないのならば、WorksheetFunction.Modと記述してワークシート関数のMODを使えばいいのではないか、と考えるかもしれません。下図のとおり、ExcelライブラリーのWorksheetFunctionオブジェクトにModメソッドはありません。VBAで余りを求めるのはMod演算子では、VBAでは、割り算の余りを求められないのかというと、勿論そんなことはありません。VBAには、割り算の余りを求めるMod演算子が用意されています。関数ではなく演算子です。Range("B1").Valueのような使い方をします。この割り算をする演算子「/」を、割り算の余りだけを計算する演算子「Mod」にすればOKです。ワークシート関数のMOD関数をご存知の方なら、書き方は違いますが、すぐに使えるのではないかと思います。正の値・プラスの数値を扱う場合は、ワークシート関数のMODとVBAのMod演算子で違いはありませんが、負の値・マイナスの数値が関係した場合、結果が異なりますから注意が必要です。Range("B1").Value」は「-1」を返します。Range("B1").Value」は「1」を返します。オブジェクト式解説編』を開催します。Officeの使い方などを紹介し続け(2012年頃からはVBA関連記事が多め)、毎日5万人の方にご覧いただいています。(2006.12.29)「PERSONAL.XLSは編集中のためロックされています。