- ベストアンサー
TextBox1とTextBox2の数値の大小の比較について
1)ユーザーフォーム上のTextBox1に入力された数値とTextBox2に入力された数値の大小の比較を下記のような感じで行ってみたところ、40>300や50>100という感じの結果になってしまいます(ゼロを無視してる?)プロパティは.Valueと.Textの両方を試してみたのですが、同じような結果だったと思います。正しい結果を出すにはどうすればよいのでしょうか。 If UserForm1.TextBox1.Value>UserForm1.TextBox2.Value then~ 2)変数を宣言して、その変数にTextBox1の内容(数値)を代入する場合、Integer型等とTextBox型のどちらとして宣言するのが正しいのでしょうか。 以上二点、よろしくお願いします。(Excel2000使用)
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
実は俺も知らなかったんですが、今実験したらおっしゃる状況が再現しました Option Explicit Private Sub CommandButton1_Click() If UserForm1.TextBox1.Value > UserForm1.TextBox2.Value Then MsgBox ("TextBox1の方が大きい") End If End Sub TextBox1.valueが40 TextBox2.valueが200 のとき、Msgboxが表示されました。 (多分文字列型としてASCIIコードか何かを比較しているのでしょう。) そこで Option Explicit Private Sub CommandButton1_Click() If CInt(UserForm1.TextBox1.Value) > CInt(UserForm1.TextBox2.Value) Then MsgBox ("TextBox1の方が大きい") End If End Sub とすることで、大小比較がうまくいくようになりました。 変数に数字として代入する時は Private Sub hoge() Dim a as Integer a = CInt(TextBox1.Value) End Sub がいいと思います
その他の回答 (1)
- zap35
- ベストアンサー率44% (1383/3079)
テキストボックスは文字通り入力した値が文字型で得られます。 従って、文字列比較で先頭の文字が4と2では2の方が小さいと判定されます。ですから Private Sub TextBox1_Change() If IsNumeric(UserForm1.TextBox1.Text) And IsNumeric(UserForm1.TextBox2.Text) Then If CSng(UserForm1.TextBox1.Text) > CSng(UserForm1.TextBox2.Text) Then 処理1 Else 処理2 End If End If End Sub のように数字と判定できるなら型変換して比較するのがよいと思います。 整数しか入らないならCintでも可です。
お礼
解決しました。ありがとうございました。
お礼
解決しました。ありがとうございました。