• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[VBA] IFと絶対値の組み合わせ)

[VBA] IFと絶対値の組み合わせ

このQ&Aのポイント
  • テキストボックスを利用して計算する際に、IF文と絶対値を組み合わせて条件を設定する方法について質問しています。
  • テキストボックスに入力された数値に基づいて計算を行う際に、D1とD2の値によって条件分岐をする必要がある場合、絶対値を使って条件を正確に設定することができます。
  • しかし、現在のコードでは絶対値の比較が不正確になってしまっているようです。より適切な構文や条件の設定方法についてアドバイスを求めています。

質問者が選んだベストアンサー

  • ベストアンサー
  • matsu_jun
  • ベストアンサー率55% (146/265)
回答No.1

ryo_ky さん、こんばんわ Abs(D2)は、正負が分からない変数に対して確実に正の値を取りたい時に利用すると便利です。 今回はD2が負であることが分かっているので(というかそのように条件分岐をしているので)、「-D2」と表記するか、「D2 * (-1)」と表記すれば良いですね。 ただし、そのように書いても問題は解決しないかもしれません。 私が同様な条件にて試してみたところ、問題なく条件分岐に成功しましたので、むしろ実際にD1、D2にどのような値が代入されているか、リアルタイムで確認する必要があるのではないでしょうか。 ソースの If Abs(D2) > D1 Then の行にカーソルを合わせ、F9キーを押してください。その行が茶色に着色されると共に、行頭に茶色の●が表示されるはずです。 この状態でプログラムを実行させると、その位置で実行が一時停止されます。 その状態で、Abs(D2) にカーソルを合わせてみてください。現在のAbs(D2)の値が表示されます。また、D1にもカーソルを合わせてみてください。D1の値が表示されます。この2つの値を実際に見比べてみてください。ひょっとしたらD1とD2の大小関係について、ryo_kyさんが想定していた値とは別の値が入っているかもしれませんよ。 途中で止めることができない場合(このソースでは無いとは思いますが)、「Debug.print」を利用します。 If Abs(D2) > D1 Then の上の行に、以下の2行を追加します。 Debug.Print "D1=" & D1 Debug.Print "Abs(D2)=" & Abs(D2) その上で、Visual Basic Editor から、「表示(V)」-「イミディエイト ウィンドウ」を選んでもらうか、Ctrlキーを押しながらGを押して、イミディエイトウィンドウを開きます。 その状態で実行すれば、D1とAbs(D2)の結果がイミディエイトウィンドウに表示されます。 それで一度値を確認してみてください。

ryo_ky
質問者

お礼

ご回答有難うございます。返事が遅くなりまして申し訳ございません。 値を確認しましたところ、 D1="5" D2="-10" Abs(D2)=10 となりまして、10と"5"の比較になった事が問題の様です。 "数値"と数値での違いについては、まだ調べていませんので、良く分かりませんが、 構文を If Abs(D2) > Abs(D1) Then (両方とも絶対値)にする事で解決致しました。 F9で○が付く事は知っていましたが、これが式を途中で止める事とは知りませんでした。 重ねて御礼を申し上げます。

関連するQ&A