標準モジュールの変数にフォームモジュールから数値を代入するには?

解決


y.hayako  2009-09-05 13:02:00  No: 142488

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に代入するプログラムです。エラー発生の原因がわからず、質問させていただきました。


ひよこ  2009-09-08 21:01:04  No: 142489

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)

でもだめでしょうか??


特攻隊長まるるう  2009-09-08 21:45:02  No: 142490

OverflowException などのキーワードでヘルプ(MSDN)を
調べればエラー発生の原因は書いてあります。

> SP=single.Parse(TextSP.Text)
確かにキャストのエラーが一番疑わしいですね。


y.hayako  2009-09-09 12:41:08  No: 142491

自己解決しました。
変数SPを使っている他のフォームモジュールのコードをコメントアウトをしてビルド、デバッグを繰り返していたところ、
質問文には載せていないのですが、SPの値を使用して割算をして、その商をintegerに変換するコードが標準モジュール内に存在することでエラーが発生していました。
このコードを標準モジュールから削除することでエラーが発生しなくなりました。

関係ないだろうと勝手に勘違いして、質問文に記載せずにいたコードが原因だったようです。
自分の知ったかぶりが恥ずかしいです。申し訳ありませんでした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加