アプリ版:「スタンプのみでお礼する」機能のリリースについて

テキストBOX1~3にある文字と一致する文字を20列目から探すという式を書きました。
これはこれでできたのですが。。。。

検索範囲を20列目と21列目にしたいのですがどのように書けば良いのかわからなくなってしまい
orで繋げてみたりまるっと21列目のコードも追加してみたりしたのですが、、、エラーが出るばかりでどうすればよいのかわからなくなってしまいました。

どなたか、、、、お優しい方。教えていただけないでしょうか。よろしくお願い致します。

For i = LBound(myData) To UBound(myData)
If myData(i, 20) Like "*" & TextBox1.Value & "*" And myData(i, 20) Like "*" & TextBox2.Value & "*" And myData(i, 20) Like "*" & TextBox3.Value & "*" And myData(i, 11) = ComboBox1.Value Then

質問者からの補足コメント

  • うーん・・・

    説明が下手くそで申し訳ないです。
    TextBox1And2And3のワードを含み、かつComboBox1で指定した条件を満たす行を探す。
    ワードの検索範囲は20と21列目。をやりたいです!

    ①検索範囲を20列目と21列目の両方で全て含まれている?それとも、それぞれで一致を確認? 片方だけ、又は両方?
    →TextBoxに入っているワードが20行目もしくは21行目に入っているかを確認したいです。

    >検索範囲を20列目と21列目 myData(i, 20) これが、20列目を指されているのでしょうか?
    →はい。仰るとおりです。

    >And myData(i, 11) = ComboBox1.Value
    これが何をされているのか、説明にないですね。
    →何も記載しておらず・・・申し訳ありません。
    男性・女性・不明をプルダウン設定しており、11行目で一致するものを検索するようにしております。

      補足日時:2021/12/27 13:21
  • うーん・・・

    ご確認、コメントありがとうございます!
    myData(i, 20) Like "*" & TextBox1 & "*" & TextBox2 & "*" & TextBox3 & "*"
    のようにまとめて書くこともできるんですね・・・ちょっと試してみます。

    ご質問頂いた内容を補足に追記してみました。
    何故か画像の添付ができなくて・・・・キャプチャを載せられませんでした。

    2行書いてうまくいくかもう一度試してみます!!ありがとうございます♪

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/12/27 13:24

A 回答 (2件)

こんにちは



>エラーが出るばかりでどうすればよいのかわからなく~~
ご提示のコードが断片的なので、他との整合性は分かりませんけれど、部分で見る限り文法的な問題はないと思われます。
ですので、ご提示のものは、20列目で上手くできているコードであろうと推測しました。

>検索範囲を20列目と21列目にしたいのですが~~
方法はいろいろあると思います。
20列目と21列目をループさせたり、ベタで両方書いても宜しいかと思います。
一方で、内容が単純に含まれているか否かだけの判断のようですので、両方をまとめて含むか/否かの判定をしても良さそうに感じましたので・・・

tmp = myData(i, 20) & myData(i, 21)
If tmp Like "*" & TextBox1.Value & "*" And _
 tmp Like "*" & TextBox2.Value & "*" And _
 tmp Like "*" & TextBox3.Value & "*" And _
 myData(i, 11) = ComboBox1.Value Then
のような判断でも事足りそうな気がします。
(実際になさりたいことの詳細がわからないので、このような条件で良いのかどうかは正確には分かりませんけれど)

あるいは、「含む」の判断をInstr関数で代用して、
If InStr(tmp, TextBox1.Value) And InStr(tmp, TextBox2.Value) And ~~
などとすることで、もう少しコンパクトに記述できるかも知れませんね。
    • good
    • 3
この回答へのお礼

解決しました

tmp = myData(i, 20) & myData(i, 21)
でまとめれば良いんですね!!

バッチリできました!!!
何ということでしょう!!!感激です。

お礼日時:2021/12/27 14:58

こんにちは。



直接の回答ではないのですが、

質問内容が、全てを説明されていない様で、幾つかわからないのですが。
①検索範囲を20列目と21列目の両方で全て含まれている?
それとも、それぞれで一致を確認? 片方だけ、又は両方?

>検索範囲を20列目と21列目
myData(i, 20) これが、20列目を指されているのでしょうか?

>And myData(i, 11) = ComboBox1.Value
これが何をされているのか、説明にないですね。

myData(i, 20)と、TextBox1、TextBox2、TextBox3の関係は何かあるの
でしょうか? 
可能かは分かりませんが、TextBoxの語句が全て含まれていて、順番が確定
しているなら下記の様にはできないのでしょうか?
(順番として、最初にTextBox1、次にTextBox2、最後にTextBox3なら。)

myData(i, 20) Like "*" & TextBox1 & "*" & TextBox2 & "*" & TextBox3 & "*" 

同じ様に2行に書いた方が良い様な気がしますが、①がどちらかによって
書き方も変わってくるかと。
この回答への補足あり
    • good
    • 1
この回答へのお礼

ありがとう

補足をしてお礼を忘れてしまっていました。
なんて失礼な・・・・
ありがとうございます!!!

こんなに説明が不足しているのにご回答いただき嬉しいです。
まだまだ勉強中なのでがんばります!!

お礼日時:2021/12/27 14:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A