システムwiki

VBA MODワークシート関数の同等のもの

hjc3 解決済 最終更新日:2021-06-14 16:52

VBAで数値のモジュラスを計算する必要がありますが、それを実行する関数が見つかりません.ワークシートMOD関数は、WorksheetFunction.modを使用してアクセスできません.簡単な方法はありますか?または 任意のの方法、本当に?

ヒュージョン

返信リスト(回答:6)

4 #
trip 1

...多分...

セルC5に最初のオペランドを置きます.

セルC7にあなたの2番目のオペランドを置きます.

次のサブを設定します.-

サブTESTING_MAR_23_2013_2018()

'

'testing_mar_23_2013_2018マクロ

'

整数

を薄暗くする

整数

として薄暗いb

A=範囲(「C5」)

B=範囲(「C7」)

範囲(「C9」)= A MOD B

'

終了SUB

サブを実行して操作の残りの部分をセルC9に戻す.

応答4# ->にスキップ
3 #
hjc3

あなたの迅速で親切な返事に感謝します.James ConeのTechniquealsoは(感謝、ジェームズ!)これはクリーナーでシンプルですが. 私は明らかに金曜日に悪い日を過ごしました、あるいはオンラインヘルプでこの答えを見つけたことがある(私は問題がありませんでした
この朝....または私は自分でジェームズの回避策を考え出しました.それにもかかわらず、私はあなたの両方にもありがとうと言いたいです-私の経験では、Microsoft Excelコミュニティはその有用性で比類されません.回答の速度は素晴らしいです、
答えは通常スポットです、そして答えられる質問の割合は非常に高いです...私はこれまでに扱われた他のヘルプフォーラムはこれまでに扱われたことさえ来ることさえ近づいています!

素晴らしい一日を!

ヒュージョン

応答3# ->にスキップ
2 #
trip

こんにちはヒュー.

私は週末に次の値を渡ってテストしました(James '入力を考慮して):-

8次に3を返します(正しい).

15次から7を返します(正しい).

18その5は3(正しい)を返します.

12その4.3は3.4(正しい)を返します.

これが上記の結果を与えるコードです(私はJamesが何をしたかの一部に転がった):-

サブTESTING_MAR_23_2013_2018()

'

'testing_mar_23_2013_2018マクロ

'

ダブル

ダブル

A=範囲(「C5」)

B=範囲(「C7」)

範囲(「C9」)=A-(VBA.INT(A/B)* B)

'

終了SUB

私はJamesのコードが2つの理由で正しいと感じました:

1.私は誤って使用されていたデータ型を持っていました:-

整数

-二重でなければならない場合

2James 'の計算:-

A-(VBA.INT(A/B)* B)

-正しい(鉱山はそうではなかった).

3.Jamesが言ったことを考慮した結果は、小数点以下の桁数(私のコードはしなかった)です.

私はいかなる方法でもジェームズに不公平になることを望んでいないでしょう.

応答2# ->にスキップ
1 #
hjc3

Applicationが整数を使用しているので、私はあなたの解決策が小数番号では機能しないことを理解していませんでした.Jimの解決策がその場合に堅牢であることを知っておくべきです.

ヒュージョン

5 #
Anonymous 3

HUGH、
RE:モジュラス
VBAのワークシート関数modのもう1つのビュー...

サブModTest()
Dim Aはダブル
Dim B倍
DIM Xはダブル
A= 12
B= 4.3
X= A-(VBA.INT(A/B)* B)
msgbox x
終了SUB

'
Jim Cone
https://goo.gl/iuqun2.

6 #
trip

これは役に立ちますか?:-

サブモジュール_macro()
整数として薄暗くなる
in整数
A= 8
B= 4
範囲( "A5:C5")=配列( "モジュラス:"、 "8 mod 4="、(A mod b))) 終了SUB