VBを勉強し始めました。
サイトを見ながらやっているのですが、
そのサイトでの流れに沿って電卓を作っています。
1+ 1=2
となるのですが、
2-1=3
となってしまいます。=ボタンのソースが、
name2=name2 name1
textbox1.text=name2
となっておるのが原因ではないか、と考えています。
ちなみに、
+ボタンのソースは、
name2 = name2 + name1
name1 = Nothing
-ボタンのソースは、
If name2 = 0 Then
name2 = name1
Else
Select Case f
Case 1
name2 = name2 + name1
Case 2
name2 = name2 - name1
Case 3
name2 = name2 * name1
Case 4
name2 = name2 / name1
End Select
End If
name1 = Nothing
f = 2
です。
変数の指定は一番最初にしており、
Dim name1
Dim name2 As Double
Dim f As String
と設定しています。
2-1=3
となってしまう原因で考えられるものをご教授ください。
また、どこを修正すればいいかご教授ください。
最初の最初で躓いて少しショックなのですが、
プログラムに強くなりたく、頑張っています。
よろしくお願いします。。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
> 最初の最初で躓いて少しショックなのですが、
> プログラムに強くなりたく、頑張っています。
プログラミングの全体のうち、「プログラムを作っている」時間はわずかです。
多くの時間は「プログラムを設計する」「作ったプログラムを期待通りに動作するように修正する」ことに費やされます。
まずは、動かない理由を推測することから考えましょう。
> 2-1=3
という現象から、
・引き算のつもりが足し算になっている
と推測されます。その原因としては
・- と書かなければならない箇所が + になっている
・2-1のつもりが2 - (-1)になっている
・ - を入力したときに、「-の処理」を実行せずに、「+の処理」を実行している
等が考えられます。
原因の候補が挙がったら、ひとつずつ確認していきます。
Visual Studio なら、デバッガを使って、要所要所にブレークポイントを置いて一時停止させ、変数の中身を確認したり、ステップ実行させてたりして、期待通りになっているか調べるのがよいでしょう。
> =ボタンのソースが、
> name2=name2 name1
> textbox1.text=name2
> となっておるのが原因ではないか、と考えています。
○ そう思った理由は?
○ ここが間違いであることで、現在起っている現象の説明ができますか?
「動作するプログラム」なら、「期待通り」に動作しない場合でも「書いた通り」には動作します。
「ここが間違いだ」というのなら、それが間違いを引き起す理由が説明できるはずなのです。
> name2=name2 name1
これ、ビルドエラーになりませんか?
デバグ実行しようとして「ビルドエラーになりました。前回のビルドを実行しますか?」みたいに聞かれて、「はい」を押していませんか?
ビルドエラーが出ている限り、今のプログラムをいくら修正しても、修正できたかどうかの確認はできません。
> -ボタンのソースは、
これを見ると、 - ボタンを押したときに
前回までの結果 前回押したボタン演算子 今回の値
を計算して、-ボタンを押した、ということを記録しているように見えます。
123 ← 数字を入力: name1になる
- ← name2=123, f=2
21 ← 数字を入力: name1になる
- ←f=2より、select~caseで name2=123-21→ name2=112 が実行される,f=2
....
となると、 + にも = にも同じ処理が入っていないと、計算が合わなくなるのでは?
期待する動作
2 ← 数字を入力: name1になる
- ← name2=2, f=2
1 ← 数字を入力: name1になる
= ←f=2より、select~caseで name2=2-1→ name2=1 が実行される
=ボタンのソースが、「name2=name2 + name1」の場合に行われると予想される動作
2 ← 数字を入力: name1になる
- ← name2=2, f=2
1 ← 数字を入力: name1になる
= ← name2=2+1→ name2=1
※なお、同じ処理が必要だからといって、コピペしてはいけません。
同様の処理は、subやfunctionにまとめるようにしましょう
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 配列の1要素を代入した変数を使って元の配列要素を削除できるか 1 2023/07/28 03:34
- 工学 ちなみになぜv=(v・e1)e1+(v・e2)e2はe1やe2が、正規直交基底でないと成り立たないと 2 2022/12/22 17:22
- 工学 以前、線形代数からフーリエ級数展開を導く上で 式v=(v, e1)e1+(v, e2)e2+…+(v 6 2022/06/29 17:24
- 数学 「(((a0)/2)・1, 1) …(a0)/2の1倍と1の内積 =(a0)(1, 1) …1 と1 5 2022/07/05 19:11
- 物理学 波の合成についてです E1(z,t)=A0cos(kz-ωt+Φ) E2(z,t)=A0cos(kz 1 2022/10/10 06:35
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- 電気工事士 平均照度の計算あっているか教えてください。忙しいと思いますがよろしくお願いします。 現地測定し数値を 1 2022/09/29 07:37
- Excel(エクセル) 【EXCEL】空白でないセルの位置を検索したい 3 2022/04/26 22:03
- Excel(エクセル) 条件付き書式の色付きセルのカウント方法について 2 2022/10/21 14:51
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Zと2とか紛らわしいのがあるか...
-
テストについて
-
プログラムソースの値段
-
システムを作るにあたり、SQLSe...
-
三菱製PLC:ファイルレジスタ(...
-
インプットとアウトプット
-
オーバレイ方式と仮想記憶シス...
-
東京でヨコイのソース買えますか?
-
グーグルの障害者訓練プログラ...
-
ゲームプランナーのスクリプト...
-
PostgreSQL+DataGridView
-
三菱シーケンサーA1SHCPUとA1SJ...
-
3000行位の帳票作成プログラム...
-
納品 vs ご納品 どちらが正し...
-
「スポット受注」はどういう意...
-
納入日と納品日について
-
営業職をやってます。先月発注...
-
texに関する初歩的な質問
-
テキストファイル内の外字の有無
-
ハノイ塔の非再帰について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Zと2とか紛らわしいのがあるか...
-
テストについて
-
三菱製PLC:ファイルレジスタ(...
-
プログラマーの土日のみのアル...
-
グーグルの障害者訓練プログラ...
-
オーバレイ方式と仮想記憶シス...
-
インプットとアウトプット
-
プログラムソースの値段
-
エントリーシート
-
初心者です。プログラムを作り...
-
PostgreSQL+DataGridView
-
三菱シーケンサーA1SHCPUとA1SJ...
-
マスクROM と PROMの違いについて
-
システムを作るにあたり、SQLSe...
-
プログラムのバージョンが上が...
-
東京でヨコイのソース買えますか?
-
マシニングセンタ プログラム...
-
フライに天つゆ
-
ナショナル NE-1401F の業...
-
3000行位の帳票作成プログラム...
おすすめ情報