No.4ベストアンサー
- 回答日時:
No.#1のRIO-Freakです。
一応、200未満の整数を入力するマクロです。Sub InputA()
On Error GoTo InputError
Dim a As Integer
a = InputBox("200未満の整数を入力してください。")
If a < 200 Then
データベースを作成するステートメント
Else
『入力された数値が範囲を越えています。』のメッセージが表示されるステートメント
End If
Exit Sub
InputError:
『入力が間違っています。』のメッセージが表示されるステートメント
Exit Sub
End Sub
No.5
- 回答日時:
No.2のmaruru01です。
エラートラップをしない方法です。
変数に代入した値の型を調べる関数、VarTypeを使用します。
VarType関数については、Helpを参照して下さい。
RIO-Freakさんのを借りました。
Sub InputA()
Dim a
a = InputBox("200未満の整数を入力してください。")
If VarType(a) <> 2 And VarType(a) <> 3 then
'整数でない場合はプロシージャを抜ける
MsgBox "整数を入力して下さい", vbCritical
Exit Sub
End If
If a < 200 Then
データベースを作成するステートメント
Else
『入力された数値が範囲を越えています。』のメッセージが表示されるステートメント
End If
End Sub
No.3
- 回答日時:
初心者の視点から見れば、
Dim a%,b$
としておいて、
b$=inputbox(~)
a%=val(b$~)
ってしたら「一応」回避できませんか?
…と思うのですがこれはまずいのでしょうか?
当初の目標であるエラーによるSTOPはなくなりました。
ただ、ELSE以下の文が実行されず「0」が入力される点が少し気になります。
最初は動けばいいなんて言いながら、だんだん贅沢になってすいません。
どうもありがとうございました。
No.2
- 回答日時:
Excelのバージョンによっては、データ型が一致しなくてもそのデータ型に自動的に変換してくれることもあります。
Excel2000にしても、中断しなくても正しい処理をしているかどうかわかりません。
したがって、どんな時でもデータ型は明示した方が良いです。そして値に対してそれぞれ処理をコーディングします。
例えば、
・テキストボックスをフォームなりシートなりに置く場合は、KeyPressイベントに入力規制のコードを書くなど。
・セルの値を拾う場合は、データ型を調べて処理を分岐するとか、お奨めしませんが、エラートラップをするなど。
あと、エラーが出たときは、デバッグでエラーの発生場所を確認してみてはいかがですか。そして、その場所のエラーが解決出来なければ、その部分のコードを質問に載せた方がみなさん回答し易いですよ。
では。
この回答への補足
御回答ありがとうございます。
質問の仕方が不充分でしたので、具体的に質問させて頂きます。
変数をAとして、Aは200よりも必ず小さな整数なので、下記のようなA < 200のIF文を作りました。(本来ならIF文でA=整数としたかったのですが、やり方が分からなかったので・・・)
このようにした時、EXCEL2000ならAに数値以外の文字を入力すると、プログラム的には間違っているのかもしれませんが「入力ミスです。」のメッセージが出ます(一応OK)。しかし、EXCEL97ではエラーになるので困っています。「変数に宣言文が必要なのでは」と思っているのですが、そこのところがよく分かりません。初めてのマクロ作成なので、Aを使って具体的に説明していただけると助かります。
(A=整数 のIF文の作り方をお願いします。)
'''''''''''''''''''''''''''
A=INPUTBOX(Aの入力)
IF A<200 THEN
データベースを作成するステートメント(Aを指定のセルに入力する。)
ELSE
「入力ミスです。」のメッセージが出るステートメント
END IF
No.1
- 回答日時:
作成したマクロの通常の処理を開始する直前に、On Errorステートメントを入れて、
エラーが発生したときの処理(ファイルのクローズやエラーメッセージの表示)を分岐するのがよいかと思います。
>EXCEL2000では中断せずに・・・
とありますが、ただ単に中断されていないというだけで、実際の処理の結果は正しいのでしょうか?
同じマクロなら、当然エラーが発生すると思いますが・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロについて教えてください...
-
実行時エラー 438になった時の...
-
なぜこんな初歩的なVBAのIf文で...
-
エクセルエラー13型が一致しま...
-
VBA 別シートのセルから、文字...
-
【Excel VBA】マクロをボタンに...
-
実行時エラー3001「引数が間違...
-
VBAにて計算式をセルへ代入でき...
-
ACCESSのエラーで困っています
-
ASP.NET OleDbConnectionが定義...
-
プロシージャ名の取得
-
EXCEL インデックスが有効範囲...
-
ExcelVBAのFindFirstエラ...
-
EOFError: EOF when reading a ...
-
VBAでのエラー
-
実行時エラー -'-2147417848
-
チェックボックスをオンにする...
-
Excel2019 ワークシートのコピ...
-
VisualBacsic6.0でvbNullString...
-
vbaのvlookup関数エラー原因を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
VBAがブレークモードになっ...
-
なぜこんな初歩的なVBAのIf文で...
-
【Excel VBA】マクロをボタンに...
-
VBSで変数の宣言はできないので...
-
VBS実行時エラー オブジェクト...
-
実行時エラー3001「引数が間違...
-
ExcelVBA Range クラスの Page...
-
ExcelVBAで、ユーザー定義型は...
-
EXCEL VBAマクロ中断でデバッグ...
-
マクロについて教えてください...
-
プロシージャ名の取得
-
ADODB.Streamを使用してUTF-8を...
-
実行時エラー -'-2147417848
-
Outlook.ApplicationをCreateOb...
-
VBAでのエラー
-
なぜエラーになるのでしょうか...
-
VBAのコードがエラーになっ...
-
[Delphi] データセットは閉じて...
おすすめ情報