VBAで質問です。変数Aに数値、変数Bにも数値がはいっています。X=A-Bの形にしたいです。ただ変数AとBの値がマイマスだった場合、欲しい値が手にはいりません。つまり、X=-A--Bという形になってしまいます。この場合はマイマスにしたいです。

ただ式、A-Bという形は変えません。関数をつかってもいいので、なんとかマイナスの値を取得したいのですが方法をお教えください。たとえばA=-1,B=-2,X=-3の値を取得したいのですが、式にあてはめると-1--2になってしまい望んだ値が得ることができません。

回答の条件
  • 1人2回まで
  • 登録:2009/05/05 12:26:17
  • 終了:2009/05/12 12:30:02

回答(4件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/05/05 13:17:16

ポイント27pt

A = (-1), B = (-2) のとき

X = A - B = (-1) - (-2) = (-1) + 2 = (+1)

となるわけで、これは四則計算の定義ですから、式は(プログラムは)間違っていません。


X = (-3) にするためには、

X = A + B

という別の式で計算しなければなりません。


ここで、別の式を適用するための場合分けが必要です。

VBAではif文で場合分けします。関数を使う必要はありません。

ご質問から推測すると、

A < 0 かつ B < 0 の場合 X = A + B
それ以外の場合 X = A - B

という2つの場合分けが必要と思われますが、他の場合分けは必要ないのですか?

たとえば、「A < 0 または B < 0 の場合」はどうしますか?

id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912009/05/05 13:24:48

ポイント27pt

変数に対して符号反転したい場合は -A とはせずに -1 * A とします。


変数の内容に応じて 処理を変えたい場合には前処理を行うか、条件判定をする必要があります。

変数Aは正でも負でもそのままでよいのでしょうか。


であれば、絶対値を取る関数 Abs を使用し

   X = A - Abs( B )

という式でよいかと思います。

id:fester No.3

fester回答回数124ベストアンサー獲得回数202009/05/05 15:45:55

ポイント26pt

IIf関数を使用したら良いです

Office TANAKA - VBA講座:IIf関数

X = IIf(A < 0 And B < 0, A + B, A - B)

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 rolexbaidu 64 17 0 2009-05-05 12:43:55

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません