• ベストアンサー

VBA 初心者

VBAでの計算方法についてです。 まず、リストやコンボボックスで選択肢を作り、選択された内容の値を使った計算をしていきます。 そして、テキストボックスより、数字の入力を行い、結果を表示します。 例としては、自動車や自転車をどちらかを選択して、 X=2*3 y=4/3 という値から、(テキストボックス3*テキストボックス4*X/テキストボックス5) その結果をテキストボックス6に表示させるというコードです。 やってみると0の値しか表示されません。 もしこの説明でわかるなら、解決方法を教えください。

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

  • ベストアンサー
noname#144013
noname#144013
回答No.2

こんにちは。 「VBA」とのみ言われましても、Excel、Word、Outlook、etc...など、いろいろ ありますので、以下は、Excel VBAの話しとして仮定させて頂きます。 > まず、リストやコンボボックスで選択肢を作り、選択された内容の値を使った計算をしていきます。 > そして、テキストボックスより、数字の入力を行い、結果を表示します。 とありますので、フォーム上に貼り付けた、各種コントロールの操作の仕方と解釈 致しました。 ■不明点その1 > 例としては、自動車や自転車をどちらかを選択して、 > X=2*3 > y=4/3 > > という値から、(テキストボックス3*テキストボックス4*X/テキストボックス5) > > その結果をテキストボックス6に表示させるというコードです。 上記の   > 例としては、自動車や自転車をどちらかを選択して、 というのは、計算式に、どのように関係してくるのでしょうか? ■不明点その2 > X=2*3 > y=4/3 > > という値から、(テキストボックス3*テキストボックス4*X/テキストボックス5) この、y=4/3 という式は、 > という値から、(テキストボックス3*テキストボックス4*X/テキストボックス5) この計算式の中には、使われていないのですが、どういうことでしょうか? ■マクロ(VBA)の記述例(※憶測した上での一例です) 以上のような不明な部分がありますので、以下は、憶測した上での記述例です。 フォーム上の各テキストボックスのオブジェクト名を、下記と仮定します。   テキストボックス3 ⇒ TextBox3   テキストボックス4 ⇒ TextBox4   テキストボックス5 ⇒ TextBox5   テキストボックス6 ⇒ TextBox6 計算を行うタイミングは、フォームに設置した「計算実行」ボタンを押した時の ボタンクリックイベントの処理として行うものと仮定します。 それから、X と Y の値は、文字列ではなく、コード内で以下のような固定の 計算式として、Double型の数値として持つようにしています。   Dim dX As Double   Dim dY As Double   dX = 2 * 3   dY = 4 / 3 '←※こちらは未使用 ◎「計算実行」ボタンのクリックイベントのマクロ 注)インデント等のため全角スペースを入れています。 /////↓ここから/////////////////////////////////// '== [計算実行]ボタンのクリック時の処理 == Private Sub CommandButton1_Click()   '各テキストボックスに数値が、入力されているかチェックする   If IsNumeric(TextBox3.Text) = False Or _     IsNumeric(TextBox4.Text) = False Or _     IsNumeric(TextBox5.Text) = False Then     '数値でなかった場合は、メッセージを表示して処理を抜ける     MsgBox "各テキストボックスには、数値を入れて下さい。", _       vbOKOnly Or vbExclamation     Exit Sub   End If   'テキストボックス5の数値が、0でないかチェックする   '※TextBox5の値は、割り算での分母の値なので、これが0だと   ' 計算エラーとなるため、これはその回避策です。   If TextBox5.Value = 0 Then     '数値が0だった場合は、メッセージを表示して処理を抜ける     MsgBox "テキストボックス5には、0以外の数値を入れて下さい。", _       vbOKOnly Or vbExclamation     Exit Sub   End If   '各テキストボックスの入力値より次の計算を行う   '※計算式 = TextBox3 * TextBox4 * dX / TextBox5   Dim dX As Double   Dim dY As Double   dX = 2 * 3   dY = 4 / 3 '←※こちらは未使用   '念のため、TextBox5が0でないかをチェックして計算を行う   If TextBox5.Value <> 0 Then     TextBox6.Value = TextBox3.Value * TextBox4.Value _             * dX / TextBox5.Value   Else     TextBox6.Value = 0   End If End Sub /////↑ここまで/////////////////////////////////// 以上です。 的外れでしたらすみません。 参考になれば幸いです。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • gandl
  • ベストアンサー率46% (6/13)
回答No.1

(テキストボックス3*テキストボックス4*X/テキストボックス5) のXに格納される値は「2*3」ですよね? でもこれは文字列として格納されてるだけなので計算はできないと思います。 やり方とすれば、 sXY = "X" か "Y" 'まずXかYを判定(リストから取得) if sXY = "X" then s1=2 'リストから値を取得 s2=3 'リストから値を取得 (テキストボックス3*テキストボックス4*s1*s2/テキストボックス5) elseif sXY = "Y" then s1=4 'リストから値を取得 s2=3 'リストから値を取得 (テキストボックス3*テキストボックス4*s1/s2/テキストボックス5) end if こんな形になると思いますが、どうでしょうか。

すると、全ての回答が全文表示されます。

関連するQ&A