No.7ベストアンサー
- 回答日時:
ti = Int(1000 / (kaisuu_s/ jikan_s)) はオーバーフローになります
>(明らかではありませんか? 後者は、変数値が0ですから) >>>
なぜですか?
0除算は可能ですか?
>kaisuu_s = Val(kaisuu.Value)
>jikan_s = Val(jikan.Value)
>それぞれプロパティが5になっています。
>ので5がそれぞれに代入されるのではないのでしょうか?
プロパティって どの値ですか? kaisuu.Value や jikan.Value ですか?
また値については、この処理のプロシージャの先頭あたりにブレークポイントを設定して、
F10キーでワンステップずつ実行して各々の値の変化をよく見てください。
>kaisuu・・・・NUMBERUPDOWNの name
>jikan・・・・NUMBERUPDOWNの name
それなら値は、kaisuu=0、jikan=0 のように書くのではなく、
jikan.Value=0、jikan.Value=0 のように書くべきではありませんか?
もう少し頭を整理して、基本的なところから見直すべきだと思いますよ。
残念ながら、これ以上はお付き合いできませんので、回答は今回で最終にします。
No.9
- 回答日時:
今までの話を見てみると、jikanとkaisuなどを文字変数扱いにしているのでは無いでしょうか?
かなりの推測なのですが、
それでtextboxの表示のみを5にしているとか。
ボックスにjikanとか名前を変えてtextを変えても、文字としか認識していませんので、計算させたら足し算で文字が繋がったりするだけで掛け算など出来ませんよ。
そんな事をするなら、文字変数から普通の数字の変数に変えてあげなければなりません。
text1.textの文字を変数に欲しいならば、
Dim jikan as Short '16bit(2の16乗)で十分です
jikan = val(text1.text)
それと変数のスケールというものがあり、定義していても違うプロシージャでは別物になったりしますので(モジュールレベル変数は別)気を付けてください。
.Netからかなり厳しい様です。
VBは定義しなくても変数を使えますが、何の変数を何処で使う等を紙に書いて、よく考えてからコーディングしてください。
では、頑張ってください。
出来あがったら教えてくださいね♪
参考URL:http://www.microsoft.com/japan/msdn/net/vbnetref …
一応解決は出来たようです。
何の変数を何処で使う等を紙に書いて、よく考えてからコーディングしてください。
そうですね。。。そうします。
いくつかのPGを平行してしているので自分でもこの変数なんだ???ってことはよくあります。
ご回答ありがとうございました。
No.8
- 回答日時:
基本的に数学で0で割ると割れません。
なぜなら、ずっと続くからです。1/0を電卓でやってみるとEが出ます。Eはエラーです。
VBでも四則演算は電卓とほぼ同じです。切り捨て繰り上がり繰り下がりなどが変数の型や命令で変えることができるくらいで同じと思ってください。
なので0で割る事をやるとコンピュータが考えこむのです。
今は動かないこと(ハング)を無くすためにエラーとして停止してくれます。なのでどういった計算をさせたのかを、プログラマーが頭の中で考える必要があると思います。
もっと大きなプログラムの場合、何処が悪いのか全然見当もつきませんから、ブレークポイントをいくつも置いて変数値を見ながら頭の中でシュミレーションを行ってください。
判断するには高校レベルの数学の知識があれば大丈夫でしょう。
プログラムで必要な事は決して諦めない事と毎日考える事です。
間を空けると流れが判らなくなり、始めから考えなければならなくなります。
気合で頑張ってください。仕事でなければ徹夜して明日の8時までに仕上げろとか上司に言われないので、気楽に頑張ってください。
No.6
- 回答日時:
>ブレークポイントを設定してしてみると
>kaisuu=0、jikan=0
>と帰ってきました。
それなら、
ti = Int(1000 / (kaisuu/ jikan)) はオーバーフローですね。
kaisuu と kaisuu_s、 jikan と jikan_s の関係もわかりません。
この回答への補足
kaisuu・・・・NUMBERUPDOWNの name
jikan・・・・NUMBERUPDOWNの name
kaisuu_s・・・ソース上の変数
jikan_s・・・ソース上の変数
です。
ご回答ありがとうございました。
No.5
- 回答日時:
#3の補足を見てあきれます。
何をやってるのかさっぱりわかりません。・パターン1 :kaisuu=3、jikan=3
・パターン2 :kaisuu=1、jikan=3
・パターン3 :kaisuu=3、jikan=1
これなら、
ti = Int(1000 / (kaisuu/ jikan)) はOKですが
ti = Int(1000 / (kaisuu_s/ jikan_s)) はオーバーフローになります
(明らかではありませんか? 後者は、変数値が0ですから)
ブレークポイントを設定してやってみればすぐにわかるはずです。
この程度の規模で間違いが発見できなければプログラミングはあきらめてください。
下記のコードに置き換えて見てください。(コピー&ペーストで)
Dim i, j, k As Integer
Dim d As Double
i = Val(kaisuu.Value)
j = Val(jikan.Value)
d = 1000 / (i / j)
k = Int(d)
どこでエラーが出ますか?
尚、Val()は使用しなくてもOKのはずです。
この回答への補足
私も何がいけないのかわかりません。
ブレークポイントを設定してしてみると
kaisuu=0、jikan=0
と帰ってきました。
プロパティでは各5に設定しています。
で
l1.Text(ラベル) =kaisuu_s & vbCrLf & jikan_s
とすると
5
5
となります。
※数字を変えるとラベルも変わります。
--------------------------------
作成中のPG
ラベルに一定の間隔(※1)で一定の回数(※2)数字を出す。
(早い話が暗算ソフト)
以上
※1
1000/(回数/時間(秒))→st(sleepする時間)
sleep(st)
※2 フォームから変更可能
(これはなぜか1と帰ってくる(プロパティでは5)
ご回答ありがとうございました。
ti = Int(1000 / (kaisuu_s/ jikan_s)) はオーバーフローになります
(明らかではありませんか? 後者は、変数値が0ですから) >>>
なぜですか?
kaisuu_s = Val(kaisuu.Value)
jikan_s = Val(jikan.Value)
それぞれプロパティが5になっています。
ので5がそれぞれに代入されるのではないのでしょうか?
ご回答ありがとうございました。
No.4
- 回答日時:
ccの値をブレークポイントで見て下さい。
Int型の使える数は±32000くらいなのでその値を超えているかもしれません。
.Netを持っていないので使えるか判りませんが、ブレークポイントを設定して、マウスポインタを当てると変数の値がわかります。
または、Debug.print ccとやってもイミディエイトウインドウに表示され値を読む事が出来ます。
まずはどの時にエラーになるのか、値をしっかりと把握する事がデバックの第一歩です。
No.3
- 回答日時:
>実行時にでます。
やはりそうですよね。
>1~25の間整数です。
> as>sd、as<sd、as=sd すべてのパターンがあります。
ますます何のことかわかりません。
具体的にその部分のソースを提示していただかなければ難しいですね。
(実行するたびに状況が変わる?)
本当に、abc=int(cc) の部分で例外が発生しているのかも疑わしいです。
別なところに問題があるのかもしれません。
自分でやるなら、下記の2行にブレークポイントを設定して
そのときの各々値を確認しながらやってみてください。
cc=200/(as/sd)
abc=int(cc)
この回答への補足
kaisuu_s = Val(kaisuu.Value)
jikan_s = Val(jikan.Value)
ti = Int(1000 / (kaisuu_s/ jikan_s))
↑です。kaisuuとjikanはNUMBERUPDOWNを使用しています。
パターン1
kaisuu=3
jikan=3
パターン2
kaisuu=1
jikan=3
パターン3
kaisuu=3
jikan=1
です。
ご回答ありがとうございました。
No.2
- 回答日時:
>ビルド時です。
オーバーフローしました というエラーです。オーバーフローはビルド時に出ないはずですが...
実行時のエラーではありませんか?
ビルド→ソリューションのビルド でその様なエラーが出ますか?
>ちなみに実際は
>cc=200/(as/sd)
>abc=int(cc)
>というような式が入っています。
>※as(<>0)、 sd(<>0) ともに整数です
as,sdの具体的な値はどうなっているんでしょうか?
この回答への補足
>何もでません。
実行時にでます。
1~25の間整数です。
as>sd
as<sd
as=sd
すべてのパターンがあります。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# gcc のコンパイラオプションについて 2 2022/12/21 17:11
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/03/09 14:24
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 10:07
- JavaScript JavaScriptの条件分岐について(yes noチャート)で悩んでおります。 Q1は2択(ab) 5 2023/04/15 11:44
- UNIX・Linux Ubuntu でinvalid filenameとなるファイルをコピーする方法 3 2023/06/08 22:26
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/08 09:05
- Excel(エクセル) ExcelのABC分析についてです。 IF関数 VLOOKUP関数等など使わずに、ABC分析は出来ま 2 2023/06/15 23:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
VBSで変数の宣言はできないので...
-
IEのダウンロード通知バーのVBA...
-
実行時エラー3001「引数が間違...
-
一般ODBCエラーについて
-
【Excel VBA】マクロをボタンに...
-
ADODB.Streamを使用してUTF-8を...
-
実行時エラー -'-2147417848
-
プロシージャ名の取得
-
EXCEL/VBAで、自分のPCだけエラ...
-
VBS実行時エラー オブジェクト...
-
VBAがブレークモードになっ...
-
ExcelVBAでのエラー回避
-
ExcelVBAで、ユーザー定義型は...
-
VBAのコードがエラーになっ...
-
デバッグ時はOK、デバッグ無し...
-
アクセス 実行時エラー3265
-
なぜエラーになるのでしょうか...
-
VBAのエラー発生場所をメッセー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAでのエラー
-
マクロについて教えてください...
-
ExcelVBA Range クラスの Page...
-
実行時エラー3001「引数が間違...
-
VBS実行時エラー オブジェクト...
-
VBAがブレークモードになっ...
-
OLEDB.NETで接続できない
-
プロシージャ名の取得
-
EXCEL VBAマクロ中断でデバッグ...
-
VBSで変数の宣言はできないので...
-
ADODB.Streamを使用してUTF-8を...
-
実行時エラー -'-2147417848
-
AccessVBAでExcelを起動し、罫...
-
VB6+SQL サーバー 2000 で 実行...
-
Outlook.ApplicationをCreateOb...
-
Application.ActiveInspectorで...
おすすめ情報