コード1 コード2 コード3
1 a 1
1 a 3
1 a 4
1 a 10
1 a 11
1 b 1
このような形でコードが入っているテーブルがあります
コード1、コード3が長整数型でコード2がテキスト型です
ここでフォームで二つのテキストボックスでコードを範囲指定抽出する機能を作りたいのですが、
テキストボックスの入力型式は三つのコードを「ハイフンで繋ぐ&前ゼロ無し」(例:1-a-3とか1-a-10)の形で行いたいという事になっています
この場合単純に三つを連結してテキスト化すると 「1-a-1 から 1-a-4 まで抽出」だと上3件のみ抽出となってほしい所が1-a-11までが対象になってしまいます(連結テキストだと1-a-10が1-a-4より前になるので)
そこでうまくテキストボックスに入力された値から範囲指定条件を作りたいのですがうまい作り方が見出せません
なお二つのテキストボックスは空欄も可とし、両方空欄→全件 後ろだけ空欄→前で指定した以降全て
前だけ空欄→後ろ指定した分より前全て としたいです
ヒトの入力はテキストを連結していても、書式が決まっているならデータ処理上では分割してしまえばいいでしょう
ハイフンで区切り、最大2回なので
InStr 関数
InStrRev 関数
ハイフン位置が分かれば文字列関数(文字列関数とその使い方)で目的の文字が取り出せます
VBA上で操作するなら配列化してしまえばもっと簡単ですね
※いずれの方式でも入力データの書式が正しいかのチェックは必要になると思います
条件の未入力を含む抽出はVBAで抽出条件(Where句)を生成し適用するのが楽だと思います
VBAが使えないときならこの掲示板でも定期ネタになりつつありそうで、(たぶん)直近の参考になりそうなリンクを貼っておきます→複数の検索ボックス
ありがとうございます
やはり区切りで分割した方がいいですね
1-a-7 < 2-a-1 となるような処理も入れたかったので何とか分割してから繋ぐ形でできました
それぞれ独立させて抽出じゃなくて組み合わせた状態で範囲を取りたいということなんですね
データの桁数気にするのも面倒なので、独立させたまま処理させたほうがいいと思いますが、かなり複雑な条件になりますね。長整数型のコードの最大桁数が決まっている(テキスト型は桁数固定)として桁を揃えたテキスト型化するのであれば、やはりVBAで処理させてしまうのが楽でしょう
計算式でやるなら