![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_12.png?5a7ff87)
コントロール配列にしたテキストボックスに数値を入力し、その数値に金種(10000円、5000円、1000円・・・)を乗算します。
そこで得られた結果を足して、ラベルに表示させたいと思っています。
現在、テキストボックスに数値を入れると
・小さい数値ならば、うまく加算できる
・大きい数値ならば、オーバーフローする
・何も記述しない(空白)とエラーがデータ型が違うという、エラーがでる
といった状態です。何がおかしいのか頭を悩ませていますので、アドバイスをお願いします。
***********************************************
For i = 0 To 8
Maisuu(i) = Val(txtKinsyu(i).Text)
Next i
lngGoukei = Maisuu(0) * 10000 + Maisuu(1) * 5000 + Maisuu(2) * 1000 _
+ Maisuu(3) * 500 + Maisuu(4) * 100 + Maisuu(5) * 50 _
+ Maisuu(6) * 10 + Maisuu(7) * 5 + Maisuu(8) * 1
lblGoukei.Caption = lngGoukei
***********************************************
No.3ベストアンサー
- 回答日時:
この場合 Dim文で変数をLong(16桁数値)に宣言します。
それとテキストボックスが空白かどうかの判断をします。
IF文を追加しました。しかしまだ問題があります。
テキストに数字以外が入力された時はエラーになりそうですが...ここまででテストしてみて下さい。
Dim Maisuu(8) ,IngGoukei as Long
For i = 0 To 8
'テキストボックスが空白でない場合
If Len(txtKinsyu(i).Text)>0 then
Maisuu(i) = Val(txtKinsyu(i).Text)
Else
Maisuu(i)=0
End If
Next i
lngGoukei = Maisuu(0) * 10000 + Maisuu(1) * 5000 + Maisuu(2) * 1000 _
+ Maisuu(3) * 500 + Maisuu(4) * 100 + Maisuu(5) * 50 _
+ Maisuu(6) * 10 + Maisuu(7) * 5 + Maisuu(8) * 1
lblGoukei.Caption = lngGoukei
No.4
- 回答日時:
これでいかがでしょうか? No.3 の laputart さんとほとんど同じです。
Dim i as Long, Maisuu(8) as Currency
For i = 0 To 8
If IsNumeric(txtKinsyu(i).Text) Then
Maisuu(i) = CCur(txtKinsyu(i).Text)
Else
Maisuu(i) = 0
End If
Next
lblGoukei.Caption = CStr(Maisuu(0) * 10000 + Maisuu(1) * 5000 + ... + Maisuu(8) * 1)
最後の部分は省略させていただきました。
chieri23 さんが書かれていたものと同じコードです。
・オーバーフローは、Currency 型で宣言することで、とりあえず回避しています。もっと大きな金額の場合は、工夫がいります。
・データ型が違うというのは、空欄は数字ではないので、Val 関数で数値変換できないためのエラーです。IsNumeric 関数で回避しています。
ありがとうございます。
ちなみに私は数値以外の入力を避けるため、Keypressで次のように制限をかけました。
***********************************
If str >= "0" And str <= "9" Then
'数字の場合は何もしない
ElseIf str = Chr(8) then
'[BackSpace]がおされたときも何もしない
Else
KeyAscii = 0
'文字を無効にする
************************************
No.2
- 回答日時:
課題か何かですか?
lngGoukeiは変数名からLong型と判断しましたが、Maisuu(i)は何型の配列
なのでしょうか?どっちにしろ lngGoukeiを振り切る値(Helpにてご自分で
上限を調べて下さい)が入った場合はオーバーフローします。
ちなみに3つ目の問題は空白かどうかチェックすればいいのでは?
そうですね・・・
課題ってほどでもないのですが。
問題はlong型で解決しました。
空白の問題はゴチャゴチャソースを直している間に何事もないように解決してしまったのです。
解決後のソースを参考までに載せておきます。
でも、何で解決したんでしょう・・・
これじゃあ勉強にならないですよね。
***********************************
'入力処理
For i = 0 To 8
lngMaisuu(i) = Val(txtKinsyu(i).Text)
Next i
lngGoukei = lngMaisuu(0) * 10000 + lngMaisuu(1) * 5000 + lngMaisuu(2) * 1000 _
+ lngMaisuu(3) * 500 + lngMaisuu(4) * 100 + lngMaisuu(5) * 50 _
+ lngMaisuu(6) * 10 + lngMaisuu(7) * 5 + lngMaisuu(8) * 1
'後始末処理
lblGoukei.Caption = lngGoukei
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- その他(Microsoft Office) エクセルのマクロを教えてください。 1 2023/01/27 09:05
- Excel(エクセル) エクセルでIF関数中にIFERROR関数を使いたいのですが???? 5 2022/04/08 13:24
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) Excel VBA 複数選択したリストボックスからテキストボックスに転記したいです。 3 2023/03/19 18:31
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Excel(エクセル) Excelで日付のグラフへの表示 2 2022/04/15 11:04
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
visualstudio C# テキストボックスの数値を取得して計算する方法を教えてください。
Microsoft ASP
-
visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ
Visual Basic(VBA)
-
VBでの簡易電卓の作成(減算方法)で困っています。
Visual Basic(VBA)
-
-
4
VBでReplace
Visual Basic(VBA)
-
5
VB.NETでフォーム上にExcelのような表を表示する方法
Visual Basic(VBA)
-
6
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
7
DataGridViewの内容をDBに反映する時
Visual Basic(VBA)
-
8
VB2005のTextBoxでカンマ区切りの表示
Visual Basic(VBA)
-
9
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
10
0での割り算
Visual Basic(VBA)
-
11
Labelコントロールに数字を代入する
C言語・C++・C#
-
12
フォームの再読み込み
Visual Basic(VBA)
-
13
VB.NETで、配列をテーブルに変換して表示する。
Visual Basic(VBA)
-
14
テキストボックスに入力された値の判定
Visual Basic(VBA)
-
15
エクセル VBA テキストボックス 掛け算 例)5 × -5 ができない
Excel(エクセル)
-
16
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
17
C♯初心者で、四則演算の電卓を作成しています。 足し算した後に更に+、=ボタンを押すと倍々になる処理
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
実行時エラー -'-2147417848
-
EXCEL VBAマクロ中断でデバッグ...
-
なぜこんな初歩的なVBAのIf文で...
-
エクセルエラー13型が一致しま...
-
VBAがブレークモードになっ...
-
EXCEL VBA シート追加時のエラ...
-
INSERT INTOステートメント構文...
-
マクロについて教えてください...
-
実行時エラー3001「引数が間違...
-
【Excel VBA】マクロをボタンに...
-
なぜエラーになるのでしょうか...
-
実行時エラー48発生時のDLL特定...
-
ACCESS フォームサイズ指定で...
-
VBSで変数の宣言はできないので...
-
ExcelVBA Range クラスの Page...
-
ADODB.Streamを使用してUTF-8を...
-
Excelで下記のようにマクロを作...
-
ExcelのVBAのAutoFillの使い方...
-
VBAでWorkbook.addの使い方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
なぜこんな初歩的なVBAのIf文で...
-
マクロについて教えてください...
-
実行時エラー3001「引数が間違...
-
VBAがブレークモードになっ...
-
ExcelVBA Range クラスの Page...
-
VBSで変数の宣言はできないので...
-
VBS実行時エラー オブジェクト...
-
OLEDB.NETで接続できない
-
プロシージャ名の取得
-
EXCEL VBAマクロ中断でデバッグ...
-
ADODB.Streamを使用してUTF-8を...
-
VBAでのエラー
-
実行時エラー48発生時のDLL特定...
-
Outlook.ApplicationをCreateOb...
-
VB6+SQL サーバー 2000 で 実行...
-
実行時エラー -'-2147417848
-
「コンパイルエラー:プロシー...
おすすめ情報