| ■No98010 (たかし さん) に返信 > いつもお世話になっております、たかしです。 > VB.NETの質問なのですが、TextBoxのフォーマットを「12,345,678」にするために、 > 次のようなコードを書いてみたのですが、 > TextBoxの値が「12,345」となって桁が3つ飛んでしまいます。 > どこが間違いなのでしょうか?どなたか教えて下さい。 > > TextBox.Text = CStr(Val(TextBox1.Text) + Val(TextBox2.Text) + Val(TextBox3.Text))
飛ぶというより、3つのテキストボックスの値の三桁以内の整数であると仮定すると、 val関数通した時点で数値になり、+演算子は足し算にになりますよね。 8桁の整数にはなり得ないです。
> If TextBox.Text = "" Then > Exit Sub > Else > TextBox.Text = String.Format("{0:##,###,###}", CLng(TextBox.Text)) > End If >
弁さんの指摘通りTextBox.Text = ""には絶対になりません。 val関数かけた時点でNothig(vbNullstring)、empty等は全部0に変換されてしまいますから。
12,345,678としたいのであれば、まず+演算をした時点で、TextBox.Textの値が12345678となっているのを確認する必要がありますよね?
そもそも、+演算子は足し算か文字列連結かどちらの意図で使おうとしてますか? それによって解が変わる気がします。
|