• ベストアンサー

VBA の IF then 文につぃて

access2000でテーブルに連結していないフォームがあり その中のテキストボックスにバーコードや磁気カードで読み込ませその桁数によって処理を分けようと思っていますが、どのようにコードを書けばよいのかおしえてください。 たとえば、 private sub() if 入力テキスボックス が 8桁 then 磁気カード処理 if 入力テキストボックスが 11桁 then バーコード処理 end if end sub public sub 磁気カード処理() public sub バーコード処理() のような形です。 どうかお願いします

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

  • ベストアンサー
回答No.3

初めまして。If文でそのまま使って組んでみました。 sub Test if len(フォームのオブジェクト名.combobox1.text).value = 8 then Call 磁気カード処理 elseif len(フォームのオブジェクト名.combobox1.text).value = 11 then call バーコード処理 end if end sub 上のコードを実行すると、コンボボックス1の桁数が8桁の時、public sub 磁気カード処理() を呼び出して、このマクロを実行します。またコンボボックス1の桁数が11桁の時は、public sub バーコード処理()を呼び出してこのマクロを実行します。 フォームのモジュールシートにコードを書く場合はフォームのオブジェクト名をmeと書いてもかまいませんが、それ以外のシートに書くときは、フォームのオブジェクト名をきちんと書かないとエラーになってしまいます。 お試しになってみて下さい。

Hugh
質問者

お礼

ありがとうございます。 おかげさまでできました。 またよろしくお願い致します。

その他の回答 (2)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

Len関数は、文字列の長さを取得する関数です。 桁数って、要するにテキストボックスに入力された文字列の長さなわけですから。

Hugh
質問者

お礼

ありがとうございます。 おかげさまでできました。 またよろしくお願い致します。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 私はSelect Case文を使います。 こんな感じ Select Case Len(Me!入力テキストボックス.Value)   Case 8     (磁気カード処理)   Case 11     (バーコード処理)   Case Else     (例外処理) End Select

Hugh
質問者

補足

早速ありがとうございます。 select文ですかあ。なるほど、 でも、桁数(数字)を区別するにはどのような構文になりますか? それともcase8で8桁と認識できるんですか? 初心者で恥ずかしい質問ですか、今一度回答お願いします

関連するQ&A