【Excel】VBA MOD関数を自作する

Excel
スポンサーリンク

Excelシート関数としてMOD関数はあるがVBAではMOD関数がない

[ ]で囲むとExcelシート関数が使える

EXCELシート関数と同じ使い方(セル値を計算する場合)

Sub myMOD()
Dim RET As Variant
    Sheets("sheet1").Select
    RET = [mod(A1,B1)]      'ここでのA1,B1はsheet1のセルを指す
    MsgBox RET
End Sub

Excelシート(Sheet1)でA1に3、B1に2と入力しC1に=mod(a1,b1)と入力した値C1と同じ答えが返ってくる。セルのA1、B1の数値を変更した後にmyMODを動かすと答えも変化する。

EXCELシート関数と同じ使い方(正の数を入れて計算する場合)

Sub myMOD2()
Dim RET As Variant
    RET = [mod(3,2)]         '数値を入れてもOK!
    MsgBox RET
End Sub

上記と違い固定値の正の数を入力しているのでmyMOD2を動かすと答えはいつも1

Excelシート関数を使うと難しい数式を考えなくてよい

  • 計算結果をテストする必要がほとんどない
  • ほぼ全てのExcel関数を使うことができる(引数設定だけ考えればよい)

汎用的に使いたいならプログラムは自作した方が早い

VBA関数として作成する:Function myMOD3

Function myMOD3(a1 As Variant, b1 As Variant) 'As Variant
    'ここでのa1,b1はvbaでの変数を指す(セルではない)
    myMOD3 = -1 '判定不能
    If Not IsNumeric(a1) Then Exit Function
    If Not IsNumeric(b1) Then Exit Function
    If a1 <= 0 Then Exit Function
    If b1 <= 0 Then Exit Function
    '計算結果の余りを返す
    myMOD3 = a1 - (Int(a1 / b1) * b1)
End Function

Sub test_mymod3()
Dim RET As Variant
    RET = myMOD3(10, 3)
    MsgBox RET
End Sub

私は自作だけで良いのでmyMOD3を使っている(これだけなので実際はmyMODという名前)

自作のメリット

  • エラー処理で止まらない工夫ができる
  • シート関数の影響を受けない

表組み、Array(Range)などの位置指定に「商ansと余りmod」を使う

  • ans=Lc(行)
  • mod=Cc(列)

編集後記

Excelで手書き図整形「インクを図形変換」を試してみる

MS-Excel2016 32bitでの使用なので、Office365soloを使った場合とは違うのかもしれないが、今のところ機能としては興味ある。が、すぐに使える代物ではなかった。というのが率直な感想だ。

2022.5.9現在では、簡単な作図、例えば「二種電工」の複線図を書く。といった場合にブログ活用するならば、これを使って書いた方が汎用的に使える。

フリーハンドで簡単に書けるので、ペンタブなどを使うまでもいかないぐらいのブログ説明図なんかには最適だと思える。

1/15 Chromium版「Microsoft Edge」は2020年1月15日リリース

  • UWSCのテスト使用が可能かどうか
    • 2022.5.9現在もOk!
  • 「コレクション機能」の詳細
    • これはなかなかイケるといった印象!
    • 2022.5.9現在では、Edgeの使用頻度が増えた!

この2点が特に気になる部分だよね~( ̄▽ ̄)

プラグイン Contact Form7でメール設定するとブログ内では最優先されるようだ

サーバーのメール設定を使わないで直接指定したメールアドレスに通知されるので、メールサーバーを経由したくない場合の運用や緊急的にメールサーバーを外したい時などはこの設定だけ変更すれば「問い合せ」メールが届くのを確認した。

タイトルとURLをコピーしました