投稿者 リスナー  (学生) 投稿日時 2009/1/6 03:13:33
皆さんこんばんは。

フォームが三枚あって、
それぞれにテキストボックスが一個ずつ、
配置されています。


一個目のテキストボックスには売上を、
二個目のテキストボックスには経費を、
三個目のテキストボックスには差額を、

こういった流れです。



>>'フォームの初期化イベント
        'フォームが開いた時点でテキストボックスに計算結果が表示されているという動作。

        '変数の宣言
        Dim Uriage As Decimal '売上を変数宣言
        Dim Keihi As Decimal '経費を変数宣言

        '変数への代入

        '変数Uriageにフォーム1枚目のテキストボックスを代入します。
        Uriage = CDec(Form1.TextBox1.Text)

        '変数Keihiにフォーム2枚目のテキストボックスを代入します。
        Keihi = CDec(Form2.TextBox1.Text)

                '売上から経費を差し引く計算式
        '「差額」を変数宣言しないで3枚目のテキストボックスに単純に計算結果を入れる。
        Me.Textbox1.Text = CStr(Uriage - Keihi)


こう書いたのですが、
実はこれはやむなくそうしたのであって、
最初は差額についても、Sagakuで変数宣言しました。


ところが変数Sagakuに三枚目のフォーム上の
テキストボックスを代入したことろで、
エラーになってしまいます。


私としては、売上や経費と同じように、
デシマルへと変換したのですが、
ストリングからデシマルへの変換が無効とされました。




Dim Sagaku As Decimal'差額を変数宣言

Sagaku=CDec(Me.Textbox1.Text)'差額にこのフォームのテキストボックスを代入する。


'売上から経費を引いて差額を計算する。

Sagaku=Uriage-Keihi


こうしたいのですが、ストリングからデシマルへの変換が無効にされます。

しかし売上と経費のステップではストリングからデシマルへの変換は有効にされています。
どうして差額を変数宣言した場合だけキャストが無効にされるのでしょう。