質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

1回答

1243閲覧

VBでの電卓作成における定数計算機能について

sakanasan

総合スコア4

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2019/08/20 04:27

前提・実現したいこと

VBで電卓作成している初心者です
電卓機能の=を複数回押した時の定数計算を設定したいのですがうまくできません
2+2=4と表示されたあとにもう一度=を押すと6となるようにしたいです

該当のソースコード

Public Class Form1

Private CommaON As Boolean = False 'カンマ(.)の入力済みフラグ Private Subtotal As Double = 0 '小計 Private Total As Double = 0 '合計 Private btnSingnFrg As Boolean '計算直後のフラグ Private OldbtnSingn As String '前回の記号キー 'ByValで関数の値渡し 関数名(ByVal 引数名 As データ型) Private Sub btn0To9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Btn0.Click, btn1.Click, btn2.Click, btn3.Click, btn4.Click, btn5.Click, btn6.Click, btn7.Click, btn8.Click, btn9.Click, btnComma.Click '数字及びカンマのボタンを押した場合の処理 'ボタンの表面の文字を取得 CType・・変換コード Dim wk As String = CType(sender, Button).Text '下記の場合入力しない If Label1.Text = "0" And wk = "0" Or (CommaON = True And wk = ".") Then Exit Sub ElseIf Label1.Text = "0" Or btnSingnFrg = True Then '一番最初の入力及び計算直後の場合クリアする Label1.Text = "" btnSingnFrg = False '文字列の連結中 End If '入力されたキーをラベルに連結表示 Label1.Text &= wk '一番最初にカンマが入力された場合先頭に0を付加する If Label1.Text = "." Then CommaON = True '2個以上カンマが入力されないように監視する為の印 Label1.Text = "0." End If '入力中の文字を数値として一時保存 Subtotal = Double.Parse(Label1.Text) End Sub Private Sub btnSign_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles btnAsterisk.Click, btnC.Click, btnCE.Click, btnMinus.Click, btnPercent.Click, btnSlash.Click, btnEqual.Click, btnPlus.Click '記号のボタンが押された場合の処理 'ボタンの表面の文字を取得 Dim wk As String = CType(sender, Button).Text If Total <> 0 And Subtotal = 0 Then OldbtnSingn = wk Exit Sub End If If (wk = "-" Or wk = "×" Or wk = "÷") And Total = 0 Then If Total = 0 And Subtotal <> 0 Then Total = Subtotal End If OldbtnSingn = wk Subtotal = 0 btnSingnFrg = True Exit Sub End If 'Select case 複数の条件により処理を分岐させたい Select Case wk Case "+" Label1.Text = (Total + Subtotal).ToString Case "-" Label1.Text = (Total - Subtotal).ToString Case "×" Label1.Text = (Total * Subtotal).ToString Case "÷" Label1.Text = (Total / Subtotal).ToString Case "C" Label1.Text = (Total - Total).ToString Case "CE" Case "=" Select Case OldbtnSingn Case "+" Label1.Text = (Total + Subtotal).ToString Case "-" Label1.Text = (Total - Subtotal).ToString Case "×" Label1.Text = (Total * Subtotal).ToString Case "÷" Label1.Text = (Total / Subtotal).ToString End Select End Select Total = Double.Parse(Label1.Text) CommaON = False Subtotal = 0 btnSingnFrg = True OldbtnSingn = wk Select Case Dim count As Integer = 0 btnEqual_click(ByVal sender As System.Object, ByVal e As System.EventArgs) '=が二回連続で押された時に前回入力した数値と演算子で再度計算する 'Dim wk As String = CType(sender, Button).Text 'ボタンが押された回数 End Select End Sub

End Class

試したこと

ネット検索4時間

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/08/20 04:30

最後の演算子と数字を覚えておいて繰り返せばできます。
sakanasan

2019/08/20 04:35

最後の演算子・・OldbtnSingn 数字・・Subtotal です 繰り返すのにはどうのような構文が正しいのでしょうか
Zuishin

2019/08/20 04:38

一度目にやったことと同じことをするだけです。
y_waiwai

2019/08/20 05:29

このままではコードが見づらいので、質門を編集し、<code>ボタンで、出てくる’’’の枠の中にコードを貼り付けてください
guest

回答1

0

とにかく、数字2つと演算子とを引数にとって、計算結果を返すようなメソッド(関数)を書きましょう。
それができればこの問題も解決できることはわかるでしょう

投稿2019/08/20 06:17

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問