カンマの入った数字から値をとる方法 への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 太郎冠者  (社会人) 投稿日時 2013/4/26 13:56:09
本題と関係ない話ですが

MsgBox(Str(b))

数値を文字列に変換する場合にStr関数を使用すると
正数の場合に先頭にスペースが入ってしまいますので
特別な意図が無い場合は、CStrやFormat、またはToStringなんかを
使用されたほうがいいですよ。

MSDN - Str 関数
http://msdn.microsoft.com/ja-jp/library/4y6a1sx7(v=vs.80).aspx
投稿者 shu  (社会人) 投稿日時 2013/4/26 08:26:51
CInt("123,456,789")

123456789

になりますよ。

例外を考えるならYuOさんが提示されているようにTryParseを
使った方がよいかと思います。

Val関数は適当に数値を拾ってくれますが今回のように意図しない動きをする
場合があります。意図した動きをさせるために小細工が必要になったりします。
投稿者 (削除されました)  () 投稿日時 2013/4/26 08:11:22
(削除されました)
投稿者 YuO  (社会人) 投稿日時 2013/4/25 22:22:05
うーん,普通は
Int32.Parse(a, NumberStyles.Integer Or NumberStyles.AllowThousands)
や同TryParseなどを使いますかね……。
http://msdn.microsoft.com/ja-jp/library/c09yxbyt.aspx
http://msdn.microsoft.com/ja-jp/library/system.globalization.numberstyles.aspx

ロケールによって,桁区切り文字はカンマだったりピリオドだったりするので,
このあたりのカルチャ依存するメソッドを使った方がよいです。
投稿者 hori  (社会人) 投稿日時 2013/4/25 21:13:03
金額を表記するにはカンマをつけた方が雰囲気がいいのですが
カンマの付いた数列から値を取り戻すのには骨が折れました。

いい方法を見つけたんだろうと思いますので
僕同様の、本学同窓の初学者のためにご報告申し上げます。
------------------

        Dim a As String = "123,456,789"

        Dim b As Integer = Val(a)

        MsgBox(Str(b))

------------------

とやると "123" と表示されますが

------------------

        Dim a As String = "123,456,789"

        Dim b As Integer = Val(a.Replace(",", ""))

        MsgBox(Str(b))

------------------

とすれば "123456789" になります。

まぁ、それだけのことですが
発見するのに結構苦労しました。
参考にしてもらえれば幸甚大であります。