MS-Access:入力内容を評価してテキストボックスへタブを飛ばす方法


お世話になります。
次のようなレコードがあります。
「商品名」
「ロットNo,」
「数量」
それぞれの入力値の先頭(左1つ目)には英字でA.B.Cが付いています。
(商品は必ずA**** ロットは必ずB*** 数量はC***)

この場合に、フォームから入力するとして
先頭にAがあれば「商品」のテキストボックスに、
先頭にBがあれば「ロットNo,]のテキストボックスに、
先頭にCがあれば「数量」のテキストボックスへ入力したいのです。
(入力する順番を規定せず、ともかく3つが正しいレコードへ入力できればOKとしたい)

データの先頭の文字を評価して入力するテキストボックスへタブを飛ばすのは、
どうすれば良いでしょうか?

質問者のスキルは
レコード・クエリ・フォーム・マクロは一通り使え
VBモジュールは作成できない程度です。

回答の条件
  • 1人2回まで
  • 登録:2007/07/19 14:58:45
  • 終了:2007/07/26 15:00:39

回答(3件)

id:takejin No.1

たけじん回答回数1472ベストアンサー獲得回数1892007/07/19 15:29:51

ポイント27pt

入力用テキストボックス(テキスト0とする)を用意して、入力はこのテキストボックスにする。

商品名、ロット、数量のテキストボックスをそれぞれ用意する。

商品名のテキストボックスには、

=IIf(Left([テキスト0],1)="A",[テキスト0])

と書きましょう。

ロットはA→B,同様に数量はCに書き換えます。

入力用テキストボックスに記入すれば、それぞれのテキストボックスに入力されるはずです。

id:masyuta

ありがとうございます。

やってみます。

2007/07/19 15:32:03
id:fuentebella No.2

fuentebella回答回数269ベストアンサー獲得回数302007/07/19 15:46:00

ポイント27pt

質問です。この「入力値」自体はどこに入力するのですか? 「商品」、「ロットNo,]、「数量」のテキストボックスのほかに、入力用のテキストボックスがあるということでしょうか? 勘違いでしたらすみません。

id:masyuta

これから作りますので、入力用を設置するもしないも、どちらでも可能です。

・・・申し訳ありませんがコメントをオープンにしてありますので、質問ありましたらそちらへお願いできますでしょうか。。手持ちポイント不足気味で回答数が限られておりますので。

2007/07/19 15:50:38
id:takejin No.3

たけじん回答回数1472ベストアンサー獲得回数1892007/07/19 15:57:00

ポイント26pt

では、マクロを書きましょう。

テキスト0のプロパティのイベントタブを選択し、更新後処理をクリック。右端の・・・をクリックしてビルダの選択を起動。マクロを選択。

マクロは条件付として、条件1を

Left([Forms]![フォーム1]![テキスト0],1)="A"

として、アクションを「値の代入」を選択。

アイテムを

[Forms]![フォーム1]![テキスト2](商品のテキストボックス)

式を

[Forms]![フォーム1]![テキスト0](入力のテキストボックス)

とします。

マクロの2行目は、条件式のAをBにして、アイテムをロットのボックス、マクロの3行目を条件式をCにして、アイテムを数量のボックスを指定しましょう。

これでどうでしょうか?

id:masyuta

ありがとうございます。

やはり私のレベルだと、そのマクロで組むのが良さそうですね。

詳しくありがとうございます。

2007/07/19 16:23:45
  • id:masyuta
    質問が悪くてごめんなさい。
    =IIf(Left([テキスト0],1)="A",[テキスト0])
    の式ですと、A、B、Cのレコードを全て埋める事が
    できません。
    (Aの後でBを入力するとAがクリアされる)

    ABCは全て入力必須です。
  • id:fuentebella
    ごめんなさい。質問を回答欄に書いてしまいました。あけないでください。(ポイントが勿体ないです)
  • id:fuentebella
    入力用のテキストを「入力」とすれば、入力のAfterUpdateイベントに

    Private Sub 入力_AfterUpdate()
    If Left(入力, 1) = "A" Then 数量 = 入力
    If Left(入力, 1) = "B" Then ロットNo = 入力
    If Left(入力, 1) = "C" Then 商品 = 入力

    End Sub
    のような感じでいけるのではと思います。

    (回答欄とコメント欄をひっくり返した使い方ですみません)
  • id:takejin
    VBAはOKですか?
    一応、マクロを使った方法を回答しておきました。
    VBAなら、fuentebellaさんの方法で大丈夫と思いますが。
    (すみません、ここに貼り付けようと思ったんですけど、基テキストが回答の中なので・・・)
  • id:masyuta
    fuentebellaさん、ありがとうございます。
     
    申し訳ありませんが私はVBA 無理ですw
    書いてある内容で何をやっているかは
    概ね分かりますが、構文のルールについて
    全くの無知ですので・・。
  • id:takejin
    私のマクロをVBA変換すると、ほぼfuentebellaさんのものと一致するはずです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません