• 締切済み

配列名を取得するVBA?

ACCESSを使って勉強中です。 VBAを記述中に疑問がわきましたのでどなたか教えてください。。 配列 a(4)の中には1か2のデータが格納されるようになっています。 格納されるのはランダムになっています。 そこで、配列の中に1があったら、それが何番目にはいっているのか a(?)というのを取得したいのですが、そういうことは可能でしょうか? よろしくお願いします。

みんなの回答

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

こんな感じでしょうか。 Sub test1() Dim i As Integer Dim Mes As String Dim a As Variant a = Array(1, 4, 1, 7, 3, 1) For i = LBound(a) To UBound(a) If a(i) = 1 Then If Mes <> "" Then Mes = Mes & " , " Mes = Mes & i End If Next If Mes = "" Then Mes = "見つかりませんでした。" Else Mes = Mes & " 番の配列で見つかりました。" End If MsgBox Mes End Sub

  • ape5
  • ベストアンサー率57% (85/148)
回答No.2

Dim strIndex as string Dim i as integer for i = 0 to 4 if a(i) = 1 then strIndex = " " & i end if next i msgbox "一致したのは、" & strIndex & "です。"

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

FOR文を使って配列の数字をチェックします。 Flg = Flse For i=Lbound(a) to Ubound(a) If a(i) = 1 then flg=True Exit For endif Next If flg then msgbox i Else msgbox "見つかりませんでした" endif

himestars
質問者

補足

早速のお返事ありがとうございます! もうひとつ質問よろしいですか? これは最初の配列しかもってこないようなのですが、 a(0)~a(4)までの間には a(0)・・・1 a(1)・・・2 a(2)・・・2 a(3)・・・1 a(4)・・・1 となったりもするのですが、 このときはどのようにすれば1があるデータをメッセージボックスに表示できますか?イメージとしてはメッセージボックスに「0,3,4」という感じで出るといいのですが・・ ご面倒でしょうがよろしくお願いします!

関連するQ&A

  • 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)二次元配列の指定した列(?)を一次元配列に 格納する方法も重ねて教えてください。 以上、よろしくお願いします。

  • データの配列への格納について(VBA)

    いつもお世話になっております。 VBAでのデータの抽出及び配列への格納についてお尋ねします。 貼付ファイルのようなデータがあります。 例えばこの中から『茨城県』のデータのみを配列に格納する場合はどのようにするのが良いでしょうか? オートフィルタ―?Find?など自分なりに考えてみたのですが・・・ 最終的には、ユーザーフォームで指定した項目に対してデータを抽出し、分析を行いたいと考えています。 どなたか御教授ください。 宜しくお願いいたします。

  • VBAで配列の計算

    VBAで配列同士の計算をすることはできますか? たとえば、配列A,B,Cがあったときに C=A+Bみたいな記述はできるのでしょうか?

  • 配列の格納について

    再度投稿してます。 アルゴリズム初心者です。 配列Aの16×16ビットの図形データーを時計周りに90度回転し、配列Bに格納する処理内容の記述を教えて下さい。 上からI番目、、左からJ番目をA(I,J)、B(I,J)と表します。 例)配列A    配列B   1 2 3 4 5     1 2 3 4 5 1 0 0 0 0 0    1 0 0 0 0 0 2 0 1 1 1 0    2 0 1 0 1 0 3 0 0 1 0 0    3 0 1 1 1 0 4 0 1 1 1 0    4 0 1 0 1 0 5 0 0 0 0 0    5 0 0 0 0 0

  • 配列の格納

    アルゴリズム初心者です。 配列Aの16×16ビットの図形データーを時計周りに90度回転し、配列Bに格納する処理内容の記述を教えて下さい。 上からI番目、、左からJ番目をA(I,J)、B(I,J)とします。

  • VBAで生成した配列の受渡

    お世話になります。 エクセルAのVBAで、配列Aを生成・使用しています。 アクセスBのVBAで、その配列Aの中身を使用したいのですが、 現在は、  エクセルA:配列Aの中身をテキストに書き出す。  アクセスB:テキストを取り込む という形で、受渡をしています。 このようなテキストを介さずに、 直接、配列のコピー(もしくは、エクセルの配列Aをアクセスで直接しよう) する方法はあるのでしょうか? 何卒宜しくお願いします。

  • VBAの配列の格納について

    エクセルのVBAで、セルのデータを配列に格納するスピードを向上したいと思います。 例えば、A1~A10000のセルにデータを書き出す場合、 For 行番号 = 1 To 10000 Cells(行番号, 1).Value = 1 Next よりも、一旦、配列に書き込んだ後、一気にセルに書き込んだ方法が早いのですが、 For 行番号 = 1 To 10000 HAIRETU(行番号, 1) = 1 Next Range("A1:A10000").Value = HAIRETU() 今度は、A1~A10000に書き込んだデータを、再度、配列に格納する場合、 For 行番号 = 1 To 10000 HAIRETU(行番号, 1) = Cells(行番号, 1).Value Next とすると時間がかかるので、 HAIRETU() = Range("A1:A10000").Value というような処理をしたいのですが、うまくいきません。 よい方法がありましたら、ご教授ください。 よろしくお願いします。

  • 【excel VBA】 配列番地の検索

    excel2000のVBAで二次元配列を検索して、 検索条件に一致する配列の番地を取得するための、 コード記述に関する質問です。 例えば、 myarray(i,j), i=1,j=1の配列があるとして、それぞれに myarray(0,0) = 1 myarray(0,1) = 2 myarray(1,0) = 3 myarray(1,1) = 4 という値が格納されており、 配列を検索して値が4の番地(i=1,j=1)を返したい、 といった場合、どのようにすれば良いのでしょうか。 ご存知の方、是非回答お願いします。

  • phpの二次元配列の値をランダムに取得したい

    ちょっとわからないことがありますので、質問させて頂きます。MYSQLから取得したデータ(二次元配列)から、ランダムに値を10件取得したいと思っております。 実際、DBにクエリを投げる段階で、 "select id,name,description from teble order by rand()" をしても、そのテーブルにあるデータ全体から取得という感じになってしまいます。 新しく追加されたデータ10件から、ランダムに取得できないので、新しく追加されたデータ10件をまずDBから取得して、php側でその中からランダムに値を取得するしかないのかと思っております。 shuffle();等を使用したのですが、配列のキーをランダムに取得するような形で、その中身を一緒に取得することができません。 考えても私の知識では解決できませんので、お分かりになる方、ご教授くださいますようお願いいたします。

    • 締切済み
    • PHP
  • VBAのWorksheetFunctionの引数に配列を使いたい

    VBAにチャレンジし始めて、1ヶ月ほどの者です。 WorksheetFunctionの引数にVBAの配列を入れて計算させたいと思っています。 例えば、作業用の配列temp_arrayを定義し、temp_array()に格納した数字の平均値をWorksheetFunctionで求めるといったことです。 しかし、 Dim temp_array() As Variant Dim a As Double a = WorksheetFunction.Average(temp_array()) としても、 「実行時エラー'1004' WorksheetFunctionクラスのAverageプロパティーを取得できません」 というエラーで叱られます。 ネットで調べていると、Excelのワークシート関数には、引数として配列を扱えるものが多いとあったので、試してみています。 例えば、参考にしたのは下記のサイトの記述です。 http://www.clayhouse.jp/array/array03_d.htm もちろん、平均値を求めるぐらいなら、自分で関数をつくった方が早いのだとは思いますが、エクセルには色々な統計関数があるので、本当に配列として、WorksheetFunctionに簡単にわたせるなら、相当プログラムが楽でシンプルにできるなぁと思います。 もし、よくご存じの方がいたらアドバイスいただけませんでしょうか?

専門家に質問してみよう