質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

17404閲覧

プロパティの使い方

退会済みユーザー

退会済みユーザー

総合スコア0

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2016/08/19 15:06

プロパティを設定し、以下のように数字を直接入力していた場合、デバックでは正常で動いていました。

Public Class zeta Private suuji As Integer Public ReadOnly Property _kazu As Integer Get Dim suuji As Integer = 5000 Return suuji End Get End Property End Class Public Class Form1 Private c_suuji As suuji = New suuji Private Sub init() Threading.Thread.Sleep(c_suuji.kazu) End Sub End Class

しかし、以下のように、5000と直接書き込んでいたところをUIのテキストボックスに入力された値からとってくるようにかえたらエラーが発生するようになりました。
どのように修正すればよいでしょうか。
よろしくお願いいたします。

引用テキスト例外がスローされました:

'System.InvalidCastException' (Microsoft.VisualBasic.dll の中)
System.InvalidCastException: String "" から型 'Integer' への変換は無効です。 ---> System.FormatException: 入力文字列の形式が正しくありません。

Dim suuji As Integer = CInt(Form1.textBox1.text)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2016/08/19 15:08

「String "" から型 'Integer' への変換は無効です。」の意味はわかってますか?
退会済みユーザー

退会済みユーザー

2016/08/19 15:09

CIntでstringからintegerに変換しています。
ozwk

2016/08/19 15:15

変換に失敗しているからそう言われるということはわかってますね?
退会済みユーザー

退会済みユーザー

2016/08/19 15:18

え~と、ここは質問掲示板ですよね? なんども言いますがCIntでstringからintegerに変換しているのにそのエラーが出ていてわからないから質問しているのです。 他の方の回答を強く求めます。
ozwk

2016/08/19 15:48 編集

「思考するエンジニアのためのQAプラットフォーム」らしいので、どの程度思考しているのか気になりまして。まあ確かにどうでもいいですね。
guest

回答2

0

ベストアンサー

CIntで変換できるのは、「数値である文字列」だけです。なんでも変換できるわけではありません。
エラーメッセージにあるように空文字(テキストボックスが未入力)は変換できないと言われています。
それが『「String "" から型 'Integer' への変換は無効です。」の意味』です。

テキストボックスに入力が行える状態になる前にプロパティにアクセスしているとか、理由はいろいろ考えられますが、提示のコードからは処理の流れは見えません。
とりあえずForm1のtextBox1のTextプロパティにデザイナで初期値(「5000」など)を入れておけば動くんじゃないでしょうか。

.NETではInteger.ParseやInteger.TryParseを使った方が良いでしょう。

投稿2016/08/19 15:34

flied_onion

総合スコア2604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/08/20 11:23

いつもわかりやすい説明ありがとうございます。 エラーの「String "" から」というのが空文字だったんですね。 デザイナに初期値を入れている状態だとCIntでも値が取れました。 ということは、suujiに値が入るタイミングは、少なくともTextに入力する以前ということですね。 いったんこの質問を閉じます。 デザイナでスタートボタンを押したときに、Textに入力されていた値がsuujiに入るよう再コーディングしてみます。 また質問しますのでよろしくお願いいたします。
guest

0

原因は「""は数値に変換できないから」です。
エラーメッセージそのまんまです。
CIntと書けば何でも数値に変換してくれるわけじゃないです。
CInt("数字じゃないなにか")と書いてあったら無理やり数値をこじつけるより
エラー出したほうが合理的なのでそうなってます。

投稿2016/08/19 15:31

ozwk

総合スコア13512

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問