• ベストアンサー

配列内の値の検索

Dim Animals(100) 下のような配列内に"ネコ"がいるかいないか 探す方法はないでしょうか? できればループ以外の方法で。            Animals(0)="ね" Animals(1)="うし" Animals(2)="とら" Animals(3)="う" Animals(4)="たつ" Animals(5)="み" Animals(...)="うま" Animals(....)="ひつじ" Animals(.....)="さる" Animals(100)="とり"

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

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

こんなのはどうでしょうか? If InStr(vbTab & Join(Animals, vbTab) & vbTab, vbTab & "ネコ" & vbTab) > 0 Then MsgBox "ネコいます" Else MsgBox "ネコいません" End If

urourojp
質問者

お礼

ありがとうございます。 なるほど・・・ですね。 早速、使わせていただきます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

(1)VBScriptのDictionaryやExistを調べてご覧 (2)基本的には総なめしかない。 頻度が多いなら、アイウエオ順の逆配列(Inverted)を作っておくとか (3)こういう課題ではJoin関数で文字列をつなぎ、Instr関数などで調べるほうがコードの見た目は少なくてすむかも。 内部機械語レベルでは繰り返しているかも知れないけれど。 http://hanatyan.sakura.ne.jp/vbhlp/vb6kansu.htm の「'Join関数の使用例」のような使い方。

urourojp
質問者

お礼

ありがとうございます。 花房さんのサイトはよく見に行っていたのですが、 今回は見落としてしまいました。 また、よろしく。

全文を見る
すると、全ての回答が全文表示されます。
noname#60992
noname#60992
回答No.2

vbのバージョンにもよりますが、 このような方法もあります。

参考URL:
http://msdn2.microsoft.com/ja-jp/library/c7cdd1d1(VS.80).aspx
urourojp
質問者

お礼

ありがとうございます。 バージョンを書いていませんでした。 VB6 or VBAでした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ゆるせない話を教えてください。

    皆さん必ずひとつぐらいは、ゆるせない話を 持ってると思います。 例えば、 松本人志のゆるせない話 参照。 サバンナ・八木の「ね・うし・とら・う・たつ・み』ときて、 次に『うま・ひつじ・さる…」って、 こっからガチで覚えなくちゃいけないじゃないですか!? みたいに、「あぁ~。。それわかるわかる!」というのを 教えてください。

  • 干支についてです。

    干支の話をしていた時にふと疑問に思っただけなので暇な時に回答いただければと思います。 ねずみ・うし・とら・うさぎ・たつ・へび・うま・ひつじ・さる・とり・いぬ・いのしし なぜ空想の動物(?)が一種類混ざっているのかなと不思議に思いました。「たつ」の事です。 昔からのことだから何かあるんでしょうね。 分かる方いましたら、豆知識として教えてください。 どうぞよろしくお願いします。

  • 干支の覚え方

    年配の人と話をしていると、干支の話になることがあります。 どうも私はこれが苦手で、順番が覚えられません。 子ね・丑うし・寅とら・卯う・辰たつ・巳み・ 午うま・未ひつじ・申さる・酉とり・戌いぬ・亥い これの暗記法とかありませんかね?

  • 配列を任意の数値で埋める方法

    VBAを使っていて dim a(256, 256, 256) といった配列を作って、ゼロとか一とか任意の数値で埋めたいのですが forループで代入していく方法はありますか? あるいは、既に数値が入ってある配列をリセットとして空の状態にする簡単な方法ってありますか?

  • Excel VBA 配列の分割について

    Excel VBAでコーディングしていますが 行き詰っているのでお助け下さい。 (1)二次元配列に格納されている値の中から 特定の値が格納されている位置をループを使わず 取得したいのですがその方法が分かりません。 <例>  Dim x(2,2) As Valiant   x(0,0) = "あああ"   x(0,1) = "いいい"   x(0,2) = "ううう"   x(1,1) = "えええ"      ・      ・      ・ この配列から"えええ"が格納されている位置をループを使わず 取得する方法を教えてください。 ⇒ 1, 1 (2)二次元配列の指定した列(?)を一次元配列に 格納する方法も重ねて教えてください。 以上、よろしくお願いします。

  • 干支のプログラム

    西暦を入力すると干支が表示されるというプログラムを作りたいのですが、どうしても上手くいきません。どこが間違っているのでしょうか? #include <stdio.h> int main(){ int i, first, year; printf( "西暦を入力して下さい --> " ); scanf( "%d", &year ); first = ( year - 1900) if( first % 12 == 0 ) { i = "ねずみ"; if( first % 12 == 1 ) { i = "うし"; } if( first % 12 == 2 ) { i = "とら";  } if( first % 12 == 3 ) { i = "うさぎ"; } if( first % 12 == 4 ) { i = "たつ"; }  if( first % 12 == 5 ) { i = "へび"; } if( first % 12 == 6 ) { i = "うま"; } if( first % 12 == 7 ) { i = "ひつじ"; }  if( first % 12 == 8 ) { i = "さる"; }  if( first % 12 == 9 ) { i = "とり"; } if( first % 12 == 10 ) { i = "いぬ"; } if( first % 12 == 11 ) { i = "いのしし"; } printf( "%d どしです", i )    } } return 0; }

  • excel関数の質問

    エクセルの関数に関する質問です! (Sheet1)   |(Sheet2)     |(Sheet3)   A      |  B       |  C 1 犬(1)   |1 馬(3)    |1 犬         |      →  |2 猫 2 猫(2)   |2 羊(4)    |3 馬         |         |4 羊 3 猿(6)   |3 虎(5)    |5 虎 ・ ・     |・ ・      |6 猿 ・ ・     |・ ・      |・ ・ ・ ・     |・ ・      |・ ・ ※()内は入力した順番 上記の様にsheet1とsheet2の特定の列に上部から(未入力セルを間に入れずに)ランダムで文字データ(商品名など)を入力していきます。 入力した文字データを上記のようにsheet1,2に入力した順番通りにsheet3に取り出すにはどのような関数を入力すればよろしいのでしょうか?

  • VBで配列に格納されているデータをUPDATEや INSERTするには

    配列変数にあるデータを一度に更新や追加したい場合SQL文を(繰り返し)ループするのが良いのでしょうか?ほかに方法はありますか 例えば dim AAA(100) as integer dim BBB(100) as string にさまざまな値データが入っているとしてそれらを、SQL文にして書き込みしたい 場合です。データテーブルはあるものしますが、何番目の配列までデータが 入っているか可変です よろしくお願い致します

  • ループカウンタを使用せず、配列の全てを足したい

    質問です。 配列を使い、その値の合計値を出す際に私はループカウンタを利用して足す手法を 思いつくのですが、それ以外の方法があると聞きました。 ですが、それ以外の方法が思いつかなく質問させてください。 int a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int nSum = 0; for ( int i = 0; i < 10; i++ ) { nSum += a[i]; } return nSum; ここでループカウンタを使用せず、配列の全てを足すにはどうしたら良いでしょうか。

  • VBAで配列内のマッチ

    VBAでfor文などループを使わないで配列の文字列とマッチするかの判定を行いたいのですが、良い方法はありますか? Dim vrnArray As Variant vrnArray = Array("A", "B", "C", "D", "E", "F", "G") で ret = match???? (vrnArray, "C") retは真 のようなことがしたいです。