Microsoft Access Club >関数を使いこなす >このページ >次頁 < 前項


初心者域の脱出 : 関数を使いこなす



このあたりで休息を取ります。厄介な代物であるプロシージャは、右に左に上に下に話が飛んでいきます。さぁ、基本形をマスターされたあなたに、果てしないいばらの道が待 っています♪

Ifステートメントの働き

さて、以下のプロシージャに少しばかり欠陥がありますが、その前にプロシージャのおさらいを行いましょう。

Function PassWordEnter改()

    If 1234 <> InputBox("パスワードを入力して下さい") Then DoCmd.Quit
    
End Function
解説

前回のダイアログに 1234 を入力して下さい。すると、フォームが開きます。これを実行するのが、下記の一行 、InputBoxステートメントです。

InputBox("パスワードを入力して下さい")

この InputBoxステートメントは、Accessにはじめから組み込まれている関数です。上記のような入力ボックスをもったダイアログを表示し、入力値が返り値となります。

Ifステートメント

Ifステートメント条件分岐を行います。

If **************** Then #################### '----------------a

の簡易構文か、あるいは以下のようにElseを用いた基本構文になります。

If **************** Then  '----------------b
      #################### 
Else
      $$$$$$$$$$$$$$$$$$$$
End If
  • a の場合は、**************** が 真 ならば、 #################### を実行する。
  • b の場合は、**************** が 真 ならば、 #################### を実行し、それ以外の場合は    $$$$$$$$$$$$$$$$$$$ を実行する。

IF ステートメントは、使用頻度がものすごく高いですから、慣れ親しんでおいて下さい。

プロシージャの欠陥

以下の手順で欠陥部分を再現します。

  1. 上記プロシージャをイミディエイト画面上で実行します。
  2. InputBoxダイアログに何も入力せずに[キャンセル]ボタンをクリックします。
  3. 下記のようなエラーメッセージが表示されます。

エラーメッセージ
エラーが発生すると、プロシージャの実行が停止します。これを防ぐにはエラーコードをプロシージャ内に記述すればいいのですが、今回は省略していますので、下図のようにエラー箇所が黄色でマーカーされます。 このように黄色の帯がかかっている行がエラーの原因プロセスです。

エラーコード13、「型が一致しません」

エラーコード13、「型が一致しません」とはどのようなことでしょうか?

InputBoxステートメントは、[キャンセル] ボタンをクリックすると、長さ 0 の文字列 ("") を返します。

1234 <> InputBox("パスワードを入力して下さい")

  • 左辺の1234は数字です。数字と長さ 0 の文字列 ("") とを比較することはできません。よって、データ型が一致しないエラーメッセージが表示され、プロシージャの進行が停止した訳です。
  • 日常生活なら比較できないこともないのですが、コンピュータの世界では住む世界が違うのです。つまり、InputBoxステートメントに数字以外の値を入力した場合、エラー が発生します。

解決方法

いろいろと回避策があります。

  1. 左辺を数字から文字列に変更する回避策。これは、パスワードを数値型から文字列型に変更し対応します。
    プロシージャを以下のように修正します。
    "1234" <> InputBox("パスワードを入力して下さい")
  2. 左辺にNz関数を配置し、バリアント型の戻り値にも対応させています。
    プロシージャを以下のように修正します。
    Nz(1234) <> InputBox("パスワードを入力して下さい")

が、一番手っ取り早くて簡単でしょう。

こちらが意図したように、中々プロシージャは動いてくれません。これはコンピュータ思考と人間思考の差ですから、英知のある我々人間が、コンピュータ思考で指示をしてあげるしか手がありません ね。

数字と文字列とは、似て非なるもの・・・・。これをマスターしていただくだけで私は満足です、はい。

2003/06/18

ページの先頭へ 前ページへ戻る


初心者域の脱出 : 関数を使いこなす


 

-Microsoft Access Club-

動画配信(ダウンロード、ストリーミング)対応の専用レンタルサーバー。データセンター設置場所はアメリカ合衆国です。: 動画サーバードットコム
動画配信(ダウンロード、ストリーミング)対応の専用レンタルサーバー。
データセンター設置場所はアメリカ合衆国です。
100Mbps〜1Gbpsまで対応できます。