• ベストアンサー

TextBox1とTextBox2の数値の大小の比較について

1)ユーザーフォーム上のTextBox1に入力された数値とTextBox2に入力された数値の大小の比較を下記のような感じで行ってみたところ、40>300や50>100という感じの結果になってしまいます(ゼロを無視してる?)プロパティは.Valueと.Textの両方を試してみたのですが、同じような結果だったと思います。正しい結果を出すにはどうすればよいのでしょうか。 If UserForm1.TextBox1.Value>UserForm1.TextBox2.Value then~ 2)変数を宣言して、その変数にTextBox1の内容(数値)を代入する場合、Integer型等とTextBox型のどちらとして宣言するのが正しいのでしょうか。 以上二点、よろしくお願いします。(Excel2000使用)

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

  • ベストアンサー
noname#20377
noname#20377
回答No.1

実は俺も知らなかったんですが、今実験したらおっしゃる状況が再現しました 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 がいいと思います

noname#128465
質問者

お礼

解決しました。ありがとうございました。

その他の回答 (1)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

テキストボックスは文字通り入力した値が文字型で得られます。 従って、文字列比較で先頭の文字が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でも可です。

noname#128465
質問者

お礼

解決しました。ありがとうございました。

関連するQ&A