ここから本文です

高1です。エクセルVBAを勉強しています。 次のコードはセルa1にの数値を読み込ん...

itp********さん

2015/1/217:59:21

高1です。エクセルVBAを勉強しています。
次のコードはセルa1にの数値を読み込んで、1000以下、1000を超える、数値でないならメッセージを出す処理のコードです。

Sub データチェック()
Dim InputData As Integer
On Error GoTo MSG
InputData = Worksheets("sheet1").Range("a1").Value
If InputData <= 1000 Then
MsgBox "入力された数値は1000以下です。"
ElseIf InputData > 1000 Then
MsgBox "1000以下の数字を入力して下さい。"
End If
Exit Sub

MSG:
MsgBox "入力が間違っています。数値を入力してください。"

End Sub

対外望み通りの結果がでます。たとえばa1に9999とあれば「1000以下の数字を入力してください。」と表示されます。しかし、20000や999999などと大きい数値にすると、[
1000以下の数字を入力してください」と表示されるべきなのに、入力が間違っています。数値を入力してください。」のメッセージになります。
すごく気になるのですが、コードの何がおかしいのでしょうか。

閲覧数:
42
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

kky********さん

2015/1/218:05:05

Dim InputData As Integer
この定義が適切でないだけです。
Dim InputData As Long
にしましょう。
Integerは、-32,768から32,767の整数です。

整数で数値の場合は大きくなることを想定して、通常Longにした方がいいと思います。
データタイプのサイトです。参考まで。
http://www.officepro.jp/excelvba/basic/index4.html

  • 質問者

    itp********さん

    2015/1/219:07:35

    integerは整数型ですが大きい数は取り扱えなかったんですね!それで大きい数用に長整数のLongがわざわざ用意されていたんですね!これまで何でもかんでもintegerばかり使っていましたが、今後は使い分けようと思います。ありがとうございました!

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2015/1/2 19:08:46

感謝 基本中の基本ですが、今後はintegerやvariantばかりに頼らないようにしようと思います。ありがとうございました。

ベストアンサー以外の回答

1〜1件/1件中

k03********さん

2015/1/218:15:56

itpassportyumiさん

学ぶなら、C言語が単純でよい。

簡単そうな言語は、隠された部分が多いので、引っかかることがある。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる