• ベストアンサー

String型からInt型への変換

Public Class Form1 Private IntText As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click IntText = CInt(TextBox1.Text) MsgBox(IntText) End Sub End Class 上記のソースは、テキストに入力した数字を ボタンを押下することで、文字列型から数字型へと変換し、 メッセージを出力させるようにしております。 文字列型から数字型へと変換をする際に、 テキストにTextBox1.Textに何も入力がなかった場合、 エラーが生じてしまいます。 このエラーを出さないようにする手段はないのでしょうか。 または、エラーを回避させるロジックを組むのがよろしいのでしょうか。 世間一般でVBでの開発業務をする際には、 どちらを取るのかもお伺いできればと思っております。 尚、使っているツールはVisual Studio 2008 Express Editionです。 以上、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • denbee
  • ベストアンサー率28% (192/671)
回答No.1

>このエラーを出さないようにする手段はないのでしょうか。 >または、エラーを回避させるロジックを組むのがよろしいのでしょうか。 色々方法はあるかと思いますが、一例としてif文でTextBox1.Textに何も入力がなかった場合を 判定して、その場合だけ別のメッセージを表示させる方法があるかと思います。 例えばこんな感じ(VBの文法はうろ覚えなのでミスってるかも?) If (TextBox1.Text != "") then MsgBox(IntText) else MsgBox("入力がありません") endif >世間一般でVBでの開発業務をする際には、 >どちらを取るのかもお伺いできればと思っております。 処理の目的や他の処理との兼ね合いもありますので、一概には言えません。 ただ、データは入力時にチェックして不正な値を入力させないのが基本ですから、 まず入力チェックを行い、不正な値(今回の場合は入力なし)には エラー処理を行わせることが多いと思います。

tkihara197
質問者

お礼

不正チェックをどこでやるのかが、 ソーストレースからわからなかったので、 そこを加味してトレースをしようと思います。 ありがとうございました。

その他の回答 (3)

  • ple_mania
  • ベストアンサー率42% (9/21)
回答No.4

======================================================================== テキストのプロパティ上のどこを設定変更すればよろしいのでしょうか?? これに関しては、ロジックとして作成しなければならないものなのでしょうか? ======================================================================== Visual Studio 2008 Express Editionのみであれば、後者が回答と なるはずです。 ただ私自身は使ったことがないので、もしかすると新しいプロパティ、 もしくは専用のテキストボックスコントロールが用意されているかも しれません。 Microsoftのmsdnページで調べてごらんになると良いと思います。

  • ple_mania
  • ベストアンサー率42% (9/21)
回答No.3

こんにちは。 =============================================================== 文字列型から数字型へと変換をする際に、 テキストにTextBox1.Textに何も入力がなかった場合、 エラーが生じてしまいます。 このエラーを出さないようにする手段はないのでしょうか。 または、エラーを回避させるロジックを組むのがよろしいのでしょうか。 世間一般でVBでの開発業務をする際には、 どちらを取るのかもお伺いできればと思っております。 =============================================================== エラーを出さないためにはどこかにロジックが必要だと思います。 (つまり回避するとほぼ同義という認識です) 「数値(数字ではなく)の入力しか受け付けない」という部分を、 1.そういうテキストボックスを作る 2.そういうテキストを判定する共通メソッドを作って呼び出す といった方法で実現するのではないかと。 回避する方法としては皆さん書かれていますので省略しますが、 ・Textなので、Nullがこないように保障する (人がNullを入れたりはしないので、Formロードの時にString.Emptyを  入れておくなど) ・プロジェクトプロパティのOptionExplicitをOnにしておいて  暗黙の型変換をさせないことでコーディング時のあいまいさを  減らしておく といった考慮もあるでしょうか。 蛇足かもしれませんが、MsgBoxではIntTextに入っている値を テキスト表示します。今後、実際の開発ではプログラム内の値を どんな書式で表示するのかも意識した方がよいかもしれません。 (例えばDateTime型を表示する場合に時刻つきなのかなどは  あらかじめ書式つきで変換した文字列を表示するべき、とか) 参考になれば幸いです。

tkihara197
質問者

補足

>「数値(数字ではなく)の入力しか受け付けない」という部分を、 >1.そういうテキストボックスを作る 数値の入力しか受け付けないテキストボックスの作り方について お伺いしたいことがあります。 テキストのプロパティ上のどこを設定変更すればよろしいのでしょうか?? これに関しては、ロジックとして作成しなければならないものなのでしょうか? 追記で質問することになりますが、宜しくお願い致します。

  • ESE_SE
  • ベストアンサー率34% (157/458)
回答No.2

もう一歩足してみると・・・ If (TextBox1.Text Is Null) then MsgBox("入力がありません") elseif (IsNumeric(TextBox1.Text=False)) then MsgBox("入力が数字ではありません") else MsgBox(TextBox1.Text) endif これで入力が空なら未入力として弾き、また入力が数字でなければやはり弾き、それ以外ならデータを表示する、という形になります。

関連するQ&A