コントロール配列にしたテキストボックスに数値を入力し、その数値に金種(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.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.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.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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
字面がカッコいい英単語
あなたが思う「字面がカッコいい英単語」を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
visualstudio C# テキストボックスの数値を取得して計算する方法を教えてください。
Microsoft ASP
-
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ
Visual Basic(VBA)
-
-
4
VB2005のTextBoxでカンマ区切りの表示
Visual Basic(VBA)
-
5
数字以外の入力をエラーにするには?
Visual Basic(VBA)
-
6
Labelコントロールに数字を代入する
C言語・C++・C#
-
7
VB2005 TextBoxに何も入力しない場合のエラー
Visual Basic(VBA)
-
8
DataGridViewに複数テーブルのデータをセットしたい
Visual Basic(VBA)
-
9
VB.net 重複チェックがしたいです
Visual Basic(VBA)
-
10
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
11
DataGridViewの特定列に入力されている重複チェックをしたい
Visual Basic(VBA)
-
12
DataGridViewの内容をDBに反映する時
Visual Basic(VBA)
-
13
VBでの簡易電卓の作成(減算方法)で困っています。
Visual Basic(VBA)
-
14
フォームの再読み込み
Visual Basic(VBA)
-
15
VBでReplace
Visual Basic(VBA)
-
16
テキストボックスに入力された値の判定
Visual Basic(VBA)
-
17
return trueとreturn falseの用途・違いは・・・?
JavaScript
-
18
エクセル VBA テキストボックス 掛け算 例)5 × -5 ができない
Excel(エクセル)
-
19
DateTimePickerでに年月までしか選択できないようにしたいです。
Visual Basic(VBA)
-
20
C♯初心者で、四則演算の電卓を作成しています。 足し算した後に更に+、=ボタンを押すと倍々になる処理
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロについて教えてください...
-
実行時エラー 438になった時の...
-
なぜこんな初歩的なVBAのIf文で...
-
エクセルエラー13型が一致しま...
-
VBA 別シートのセルから、文字...
-
【Excel VBA】マクロをボタンに...
-
実行時エラー3001「引数が間違...
-
VBAにて計算式をセルへ代入でき...
-
ACCESSのエラーで困っています
-
ASP.NET OleDbConnectionが定義...
-
プロシージャ名の取得
-
EXCEL インデックスが有効範囲...
-
ExcelVBAのFindFirstエラ...
-
EOFError: EOF when reading a ...
-
VBAでのエラー
-
実行時エラー -'-2147417848
-
チェックボックスをオンにする...
-
Excel2019 ワークシートのコピ...
-
VisualBacsic6.0でvbNullString...
-
vbaのvlookup関数エラー原因を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
VBAがブレークモードになっ...
-
なぜこんな初歩的なVBAのIf文で...
-
【Excel VBA】マクロをボタンに...
-
VBSで変数の宣言はできないので...
-
VBS実行時エラー オブジェクト...
-
実行時エラー3001「引数が間違...
-
ExcelVBA Range クラスの Page...
-
ExcelVBAで、ユーザー定義型は...
-
EXCEL VBAマクロ中断でデバッグ...
-
マクロについて教えてください...
-
プロシージャ名の取得
-
ADODB.Streamを使用してUTF-8を...
-
実行時エラー -'-2147417848
-
Outlook.ApplicationをCreateOb...
-
VBAでのエラー
-
なぜエラーになるのでしょうか...
-
VBAのコードがエラーになっ...
-
[Delphi] データセットは閉じて...
おすすめ情報