- ベストアンサー
テキストボックスで入力された文字を抽出する方法
- 入力用フォームAに配置された複数のチェックボックスとテキストボックスから、テキストボックスに入力された文字のみを抽出する方法について教えてください。
- 入力用フォームAのチェックボックスとテキストボックスは別々のフィールドにすることができず、表示用フォームBのフィールド1にまとめて表示されています。テキストボックスで入力させた文字だけを抽出する方法を教えてください。
- チェックボックスとテキストボックスがひとつのフィールドにまとめられており、テキストボックスで入力された文字を抽出する方法がわかりません。どのようにすれば良いでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
要は、表示用フォームBのテキストボックスの値 フィールド1【A C あいうえお】 を頼りに 入力用フォームに「あいうえお」とあるレコードを探し出したい。 そのためには、【A C あいうえお】から「あいうえお」だけを切り出す必要がある。 ということでしょうかね。 こちらで、【A C あいうえお】を見た限りでは 【A□C□あいうえお】のように半角スペースで区切られていますが 実際のも必ずそうですか? (上記□は半角スペースのつもりです) A~Z?までのチェックボックス名は半角一文字ですか? 「あいうえお」部分には、実際には半角全角問わずアルファベットやスペースが使われる可能性がありますか? 以上3点のご確認を願います。 別案としては、【A C |あいうえお】みたいに仕切り役の | などを入れられれば 関数だけで、 strFind = mid("A C |あいうえお",instr("A C |あいうえお","|")+1) strFindに「あいうえお」が切り出せるのですけどねー。 したら forms!入力用フォームA.recordset.findfirst ("あいうえおの入っているテキストボックス名 = '" & strFind & "'" ) でそのレコードに飛んで行ってくれるハズ。 (「あいうえお」が一意の場合に有効です。複数ある場合は最初にしか行きません) 複数あるときには、Filter を使えば・・と思います。 勘違い回答かも知れないので、とりあえずこの辺でひとまず。
その他の回答 (2)
- nicotinism
- ベストアンサー率70% (1019/1452)
なんどか読み返してみましたが、 やはりチェックボックス部分とテキストボックス部分は テーブルの別個のフィールドに格納すべきです。 >チェックボックスについては、 >フォームの読み込み時のイベントで >If Forms!フォームB![フィールド1] Like "*" & "A" & "*" Then >Me.A.Value = True >End If とされていますが、 フィールド1が、「A B Good Morning」とあれば チェックボックスは、A B D G I M N O R とチェックが入ってしまいませんか? 一つのフィールドに複数の意味を持たせるのは無理があります。 特にテキスト部分が「なんでもあり」なのですから バグの原因を潜ませることになるかと思います。 >A C |かきくけこ とあった場合にユーザーが誤って A |あいう とチェックボックス部分を消してしまう可能性もあります。
お礼
チェックボックスを、A B C としたために紛らわしくなってしまってすみません。 実際はアルファベットではなく ■調停 □訴訟 ■控訴 【遺産分割】 という感じで、 表示用フォームには 調停 控訴 遺産分割 と入るようになっています。 表示用フォームを誤って直接操作されても 開くときのVBAでチェックボックスを入れるようにしているので (表示用フォームの内容を判断してチェックを入れるようにVBAをくんでる) それは問題ないとは思ったのですが・・・ 私の考えていることに限界があるようですので 別の方法も検討してみたいと思います。 ありがとうございました!
補足
教えていただいた関数などを利用して、 なんとかテキストボックスの内容だけ抽出する方法に成功しました。 しかし次の問題が出てきてしまいました。 http://oshiete.goo.ne.jp/qa/8229369.html もしよろしければまた教えていただければと思います。 ありがとうございました!
- nicotinism
- ベストアンサー率70% (1019/1452)
状況がよくわかりません。 テキストボックスに、"あいうえお"と入っていて フィールド1の、"あいうえお"を含むレコードだけを抽出・・・ということ?かな? 表示用フォームBの説明も欲しいです。 レコードソースがテーブルなのかクエリなのか。。。
お礼
お返事ありがとうございます! 説明不足で申し訳ありません。 会員の住所録を作成しています。 表示用フォームBは単票フォームです。 リストボックスを配置していて、そこに氏名一覧を表示させ、 氏名をクリックすると会員情報の詳細情報が表示されるようになっています。 さらにボタンを配置して、ボタンをクリックすると 入力用フォームAが開くようになっています。 入力用フォームAのチェックボックスにはそれぞれ ■Aには”A” □Bには”B” ■Cには”C” と名前を付けています。 表示用フォームBのフィールド1には フォームAの「チェックの入っているもの」&「テキストボックスの内容」 が入るようにして、 入力用フォームAで 該当箇所にチェックを入れたりテキストボックスに書き込んだりしてフォームを閉じると、 表示用フォームBのフィールド1に「A C あいうえお」と表示されるようにしています。 表示用フォームBのフィールド1の内容を変更したいと思ったとき、 入力用フォームAを開くと、 ■A □B ■B 【あいうえお】 と入力されている状態にしたいんです。 チェックボックスについては、 フォームの読み込み時のイベントで If Forms!フォームB![フィールド1] Like "*" & "A" & "*" Then Me.A.Value = True End If ・・・ として、フォームAを開いた時に該当箇所にチェックが入るようにできたのですが、 テキストボックスに、以前入力した内容を表示させる方法がわかりません。 表示用フォームBのレコードソースはクエリです。 よろしくお願いいたします!
お礼
ありがとうございます! スペースで区切っていましたが、テキストボックスは自由記入欄なもので、誰に何を入れられるかわかりません・・・。でも「|」であれば誰も入れないと思いますので、それで区切るようにしたいと思います! 早速ためしてみます!
補足
すみません・・・いただいたものをヒントに色々試してみたのですが・・・ レコードを探し出すのではないんです・・・すみません。 たとえば 田中さんに、入力用フォームAを使って A C あいうえお と入力し、 あとで変更があった場合 入力用フォームBをふたたび開いて、 A C かきくけこ などと入力しなおしたいんです。 入力しなおす場合に、 入力用フォームBをそのまま開いても何も入力されていない状態 (チェックボックスにチェックは入っておらず、テキストボックスも空の状態) で開いてしまいますが、 チェックボックスの該当のところにはチェックを入れて(←これはできてます) テキストボックスには、全開入力した内容が入っている状態にしたいです。 ちなみにテキストボックスには空欄、英語、数字等何でもはいる可能性がありますが ”|”は入る可能性が非常に低いので、 ”|”で仕切ることは可能です! もしよろしければ、またよろしくお願いいたします!