VBAで、足し算・引き算・掛け算・割り算の演算式を関数化したいです。
これまではFunctionプロシージャなどは使わずに、それぞれにSelect Case ent
case 1~などを書いていましたが、ここを関数化したいと思っています。
戻り値があるので、Dim オブジェクト名 As 戻り値のデータ型
オブジェクト名 = プロシージャ名
というような記述になると思っているのですが、この場合何が引数で戻り値なのかも認識が危ういです・・・
周囲にVBAを履修している者がいないので、ご教授いただければ幸いです。
発生している問題・エラーメッセージ
・演算キーを押すとTextBoxが0になる。 ・足し算は+0という形になるから答えは一応合っているが、掛け算、割り算、引き算の0が加算されるため 答えが0になる。
該当のソースコード
Option Explicit Dim ans As Double '答えを保持 Dim num As Double Dim ent As Integer '分岐する変数 1は+、2は-、3は*、4は/ Dim enzan As Boolean 'ture;+-*/ falseそれ以外 条件を指定した結果を保存 Function func(ByVal ent As Integer) As Double '呼び出したい計算式 enzan = True num = Val(TextBox1.Text) Select Case ent Case 0 ans = num Case 1 ans = ans + num Case 2 ans = ans - num Case 3 ans = ans * num Case 4 ans = ans / num End Select TextBox1.Text = ans End Function '上記がGeneralに記載している部分 Private Sub CommandButton1_Click() '数字の1ボタン If enzan = False Then If TextBox1.Text = "0" Then 'コマンドを押した際に0を上書きして数値を表示 TextBox1.Text = "1" Else TextBox1.Text = TextBox1.Text & "1" End If Else TextBox1.Text = "1" enzan = False End If '2~9ボタンも上記と同様 End Sub Private Sub CommandButton11_Click() '足し算 +キー ※ 9/13修正 ent = 1 Dim r As Double r = func(ent) TextBox1.Text = r End Sub '+、×、÷ボタンも上記と同様 1,2,3,4で条件分岐 Private Sub CommandButton15_Click() 'イコールボタン enzan = True num = Val(TextBox1.Text) If ent = 1 Then ans = num + ans TextBox1.Text = CStr(ans) End If If ent = 2 Then ans = ans - num TextBox1.Text = CStr(ans) End If If ent = 3 Then ans = ans * num TextBox1.Text = CStr(ans) End If If ent = 4 Then ans = ans / num TextBox1.Text = CStr(ans) End If ent = 0 '=後に再度演算キーを押した際に結果を加算されないようにするため ans = 0 End Sub
補足情報(FW/ツールのバージョンなど)
・+は1,-は2,×は3,÷は4にして条件分岐しています
・作っているのは電卓です TextBoxには押した数値キーの数字(num)と演算結果(ans)が出ます
・下記が四則演算を関数化する前の演算の部分の書き方です。こちらだと正常に動きます。
Private Sub CommandButton11_Click() '足し算
enzan = True num = Val(TextBox1.Text) Select Case ent Case 0 ans = num Case 1 ans = ans + num Case 2 ans = ans - num Case 3 ans = ans * num Case 4 ans = ans / num End Select TextBox1.Text = ans ent = 1 '-は2,*×は3,÷は4 後は同じ記述
End Sub
回答6件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。