VB2005において、フォームモジュールで取得した数値を、標準モジュールの変数に代入するプログラムを作成しているのですが、デバッグを行うと、
「TypeInitializationExceptionはハンドルされませんでした。Module1のタイプ初期化子が例外をスローしました。」と警告が表示されます。
イミディエイトウィンドウには、
「'System.OverflowException' の初回例外が プログラム.exe で発生しました。'System.TypeInitializationException' の初回例外がプログラム.exe で発生しました。」と表示されます。
フォームモジュール、標準モジュールのプログラムの記述はそれぞれ以下の通りです。
(フォーム1)
Public Class form1
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
SP = CSng(TextSP.Text)
End Sub
End Class
(モジュール)
Module Module1
Public SP As Single
End Module
OKボタンが押されるとテキストボックス内の数値をSingleに変換して、SPに代入するプログラムです。エラー発生の原因がわからず、質問させていただきました。
Module Module1
Public sp As Single
End Module
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
sp = CSng(TextBox1.Text)
TextBox1.Text = sp
End Sub
End Class
↑のコードをVB2005で試してみましたが、問題なく動いてますねー
確認のため、テキストボックスに変換後の値を表示させてますが、
その他は同じ事してると思うだけどなー
SP=single.Parse(TextSP.Text)
でもだめでしょうか??
OverflowException などのキーワードでヘルプ(MSDN)を
調べればエラー発生の原因は書いてあります。
> SP=single.Parse(TextSP.Text)
確かにキャストのエラーが一番疑わしいですね。
自己解決しました。
変数SPを使っている他のフォームモジュールのコードをコメントアウトをしてビルド、デバッグを繰り返していたところ、
質問文には載せていないのですが、SPの値を使用して割算をして、その商をintegerに変換するコードが標準モジュール内に存在することでエラーが発生していました。
このコードを標準モジュールから削除することでエラーが発生しなくなりました。
関係ないだろうと勝手に勘違いして、質問文に記載せずにいたコードが原因だったようです。
自分の知ったかぶりが恥ずかしいです。申し訳ありませんでした。
ツイート | ![]() |