• ベストアンサー

VBAで書き換え可能な可変配列を使用したいです。

Collectionクラスを使った可変型の配列は要素の中身を書き換えることができず、一旦removeして同じキー名でaddしなくてはなりません。 VBAでJavaでいうArrayListのような可変かつ書き換え可能な配列を使う方法はないものでしょうか? どなたか教えて下さい。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Excel(エクセル) VBA入門:Dictionaryオブジェクトを利用する http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_dictionary.html Dictionaryオブジェクトは既に検討済みなのでしょうか?

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

関連するQ&A

  • 【Doja】自作クラスの可変長配列を使いたい

    【Doja】自作クラスの可変長配列を使いたい Doja5.0でiアプリを開発しています。 自作クラスを要素とする可変長配列を使いたいと思いArrayListを使おうと思ったら、GenericsはDojaではコンパイル通らないようで。(http://okwave.jp/qa/q3136314.html) そこで、自作クラスの可変長配列を使いたい場合、どうすればいいでしょうか?

    • ベストアンサー
    • Java
  • 可変長配列の中にInteger型の可変長配列を登録

    可変長配列の中にInteger型の可変長配列を登録するやり方を教えてください。 また、その可変長配列の中にある可変長配列の中の例えば3つ目の要素にアクセスして、 格納されている値を取り出す方法を教えてください。 よろしくお願いします。

  • 可変長配列について

    任意のホストと任意のパケットを送受信するクラス(仮称:PacketSender)を書いているのですが、この中では、TCPの受信用にsocket.getInputStream()を定義し、それをread()して1バイトずつ取り出しています。しかし、Streamですから、取り出してみないと全体の長さはわかりません。 こういった場合、PacketSenderから他に受信データを渡す場合、byte[65535]とか適当な大きさの配列を作って突っ込む、あるいはArrayListを作って逐一addしていくしか方法はないのでしょうか。 ぴったりの長さのbyte[]を返せればいいのですが・・・。

    • ベストアンサー
    • Java
  • ArrayListを使った多次元配列の作成について

    ArrayListで可変長配列を扱っているのですが、 2次元可変長配列を用いる必要が出てきたので、 下記のように変更したのですがうまくいきません。 何が悪いのか教えていただけませんでしょうか? ----------------------------------------- ArrayList cars=new ArrayList(); cars.add("フェラーリ"); cars.add("ポルシェ"); cars.add("メルセデスベンツ"); for(int i=0;i<cars.size();i++){  String str=(String)cars.get(i);  System.out.println(str);} ----------------------------------------- 上記から下記のように変更しました。 ----------------------------------------- ArrayList[] cars=new ArrayList[3]; cars[0].add("フェラーリ"); cars[0].add("ポルシェ"); cars[0].add("メルセデスベンツ"); for(int i=0;i<cars[0].size();i++){  String str=(String)cars[0].get(i);  System.out.println(str);} ----------------------------------------- エラーは「Exception in thread "main" java.lang.NullPointerException」です。 どうやら初期配列が10ではなく3となってしまっているようです。

    • ベストアンサー
    • Java
  • Struts:可変個数のテキストボックスの値を取得したい

    お世話になっております java 1.4.1 struts 1.1 Eclipse2.1.3 上にてwebアプリケーションの開発を行っております DynaActionFormを利用し、配列型のテキストボックスをsubmitする画面を作成しております。 String型の配列は取得できたのですが、 struts-config.xmlにて配列の要素数を指定しております。 テキストボックスの数は可変となる為、要素数を固定値で指定したくなく、 変わりにArrayListを使用出来ないかと考えております。 struts-config.xmlの対象のform-propetyエレメントのtype属性を"java.util.ArrayList" と変更してみたのですが、submitした時に アクションクラスのexecuteメソッドに来る前に 例外が発生しており、 「java.lang.IndexOutOfBoundsException: Index: 19, Size: 0」 といった例外がブラウザに表示されております。(文字制限の為、省略しております。) ArrayListを使用する場合でも要素数の定義などが必要ということなのでしょうか。 また、Stringの配列で要素数を指定しなくても取得する方法はございませんでしょうか。 当方、Strutsがまだ勉強し始めな状態のため、説明が至らない部分がございますことをご容赦ください。 ご教授の程、何卒よろしくお願いいたします。

    • ベストアンサー
    • Java
  • オブジェクトを配列として扱いたい

    Java(オブジェクト指向)を始めて数日の者です。 LinkedListを利用し、インスタンス化したオブジェクトをListに入れて 扱えるようにしたいと考えています。 具体的には LinkedList<クラス名> array = new LinkedList<クラス名>(); クラス名 object1 = new クラス名(); -object1の処理- array.add(object1); -object1の処理- array.add(object1); -object1の処理- array.add(object1); このようにして、object1を配列で管理するイメージです。 object1の処理結果は、毎度変わっています。 しかしこれですと、最後のobject1の処理の内容がすべてのarray(i)に入ってしまいます。 要は、array(i)は全て、同じobject1を参照しているだけ。 object1の変更結果がarray(i)に入っていくというイメージでは無い、ということでしょうか? また、この他でインスタンス化したものを配列で管理できるような方法がございましたら、ご教授いただけると幸いです。m(_ _)m 動的に配列の要素数を変更(要素が追加)ができるようにしたいのです。

    • ベストアンサー
    • Java
  • ArrayListに多次元配列

    ArrayListに多次元配列の変数を格納したのですが、取り出し方がわからず困っています。 ----------------------------------------------- String[][] str = {{"aaa","bbb","ccc","ddd","eee","fff"}, {"aaa","bbb","ccc","ddd","eee","fff"}, }}; ArrayList array = new ArrayList(); array.add(str[0]); array.add(str[1]); ----------------------------------------------- 上記の場合で、str[0][2];を取得する方法がわかりません。 java初心者なのでおかしな質問かもしれませんが、宜しくお願いします。

    • ベストアンサー
    • Java
  • ArrayListの質問。

    ロジックの質問なのですが、、 ValueObjectクラス  private boolean flg = false;  private String strYMD; それぞれgetter/setter あらかじめ、aValの方にsetterで、20040626とセットします。 このオブジェクトをArrayListへaddしていきます。 ここで、String[] strYMDArray ={"20040623","20040626","20040622"}; という配列があります。 このとき、ArrayListの中身の要素数でループさせて、 配列strYMDArrayの日付と、ArrayList内のValueObjectの日付を比較し、同じであれば、 ValueObjectのflgをセットし、再度、ArrayListへつめなおしてやらなければなりません。 しかし、うまい方法を思い浮かべることができません。 どうか、うまい方法をおしえてくださいませんでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Java
  • C++言語の配列の呼び方,動的・可変長の違い

    C++言語での配列の名称についての質問です. int Array[10]; みたいに宣言する普通の配列は「静的配列」と呼びますよね.コンパイル時に定数で要素数を指定しておかなければならないからですよね. これに対して,new[]演算子を用いて int *Array = new int[n]; といったように確保する配列はなんと呼ばれるのでしょうか. 実行後に変数を用いてその要素数を動的に指定できるので,「動的配列」と呼ぶ人が周りには多いです(「ポインタ配列」とも).しかし,C言語でのrealloc関数みたいに,直接に配列長を変化させるといったようなことはできませんよね. (改めてnew[]してmemcpy()すれば出来るのでしょうが) そこで,配列長をプログラム中で自在に変化させる方法としてstd::vectorを利用する方法がありますよね.このvectorを「動的配列」と呼ぶ人もいました. 私は,new[]したものは動的に要素数を指定できるがその後の配列長は固定であり,vectorはいつでも配列長が可変なので int Array[10]; ・・・静的固定長配列(静的配列) int n = 10; int *Array = new[n]; ・・・動的固定長配列 std::vector<int> v; ・・・可変長配列 と呼んでいるのですが,一般的にはそれぞれどのように呼ばれるのでしょうか. また,最近はstd::arrayをいうものを知りました.これについてもどのように呼ばれるのか,教えてください. よろしくお願いいたします.

  • C# 配列の配列(多次元配列?)

    C#において、配列の配列中に格納した値を、検索することを 行いたいのですが、格納した値そのものを見ることができません。 まだ、C#を始めて間もないので、配列に格納する時点で、 不備があるかも知れませんが、お願いします。 やりたいこと ・テキストファイル内にある値を、2次元配列または、多次元配列に格納 ・配列に格納した値で、データチェックなどを行う予定  テキストファイル内のデータは、下記内容となり要素数も固定ではなく変動する   A=1,2,3・・・   B=11,22,33・・・ 実際のソースは、 //配列 ArrayList list = new ArrayList(); //配列格納 1レコード毎用 ArrayList listtmp = new ArrayList(); while ((strGenderTextLine = objReader.ReadLine()) != null) {  string strBuffer;  //「=」前の値格納用変数  string[] strBuffer2; //「=」後の値格納用配列  listtmp=null;  //strtmpに「=」前の値を格納  strtmp = TextLine.Split('=').GetValue(0).ToString();  //strtmp2に「=」後の値を格納(配列)  strtmp2 = TextLine.Split('=').GetValue(1).ToString().Split(',');  for (int i = 0; i <= strtmp2.Length - 1; i ++)  {   //[i,0]に、「=」前の値を代入   if (i == 0)   {   listtmp.Add(strtmp);   }   else   {   listtmp.Add(strtmp2[i].ToString());   }  }  //list配列にlistTmp配列を格納(配列の配列)  list.Add(listtmp);  intT = intT + strtmp2.Length;  //行数カウント  intTLine = intTLine + 1;  } ここから、配列「list」内に入っている値を閲覧することができる方法を教えていただければと思います。 宜しくお願いいたします。

このQ&Aのポイント
  • 普段のレシートをスキャニングして家計簿を作る方法について皆さんの意見を教えてください。
  • どの機種を買ったらいいのか、また、ソフトはついているのかについても教えていただきたいです。
  • SV600はおすすめの機種なのでしょうか?皆さんのご意見をお聞かせください。
回答を見る