• ベストアンサー

データ数の定まらないデータをもれなく配列変数に格納する方法

あるときは10個またあるときは100個のデータがあるとします。 しかし、データの数は1000個になるかもしれませんし、1個になるかもしれません。 ただし、データ数が0個以下になることはありません。 このような、データ数の定まらないデータを確実にもれなく配列変数に代入したいのですが、方法がわかりません。 変数で dim hairetu(kazu) as integer として配列の数を設定できれば良いのですが、どうも無理のようです。 データの最大数(仮に1000個)を決めて dim hairetu(1000) as integer とするしかないのでしょうか。 何か良い方法はありませんでしょうか。

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

  • ベストアンサー
  • masakin
  • ベストアンサー率59% (32/54)
回答No.1

Dim hairetu() As Integer      : ReDim hairetu(kazu) 動的配列で宣言しておき、kazuが決定した時点で ReDimで配列を割り当てることができます。

xiaolong_goo
質問者

お礼

そんなステートメントがあったなんて・・・ 簡単なことなんですね。 有り難うございます。

その他の回答 (1)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

dim aa() as integer dim DataCount as long dataCount = 1000 redim aa(dataCount) as integer

xiaolong_goo
質問者

お礼

唖然・・・・ です。 奥が深いVBです・・・・ 有り難うございます。

関連するQ&A

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

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

  • 文字列を改行で区切り配列に格納したい

    データをプログラムに明記し、プログラムで いろいろ加工したり処理をしたい場合ですが、 例えば、 Dim hairetu(10) As String hairetu(0) = "aaa" hairetu(1) = "bbb" hairetu(2) = "ccc" 途中省略 hairetu(10) = "zzz" これをイメージとして以下のように行う方法はありますでしょうか あくまでもイメージとしてです。 Dim mojiretu As String Dim hairetu(10) As String mojiretu="aaa\nbbb\nccc\n途中省略zzz" ← hairetu=mojiretuを”\n”で区切り順次配列に格納する ←は、mojiretu="aaa bbb ccc 省略 zzz"  のようなイメージです。 よろしくお願いします

  • 変数

    Dim トータル As Integer トータル = 200 Dim 変数1(トータル) As Integer Dim 変数2(トータル) As Integer Dim 変数3(トータル) As Integer Dim 変数4(トータル) As Integer ※変数1~4に同じ数の変数(クローン??)を用意したいのですがエラーがでます。 このような使い方は出来ないのでしょうか? なお、VB上ではローマ字で使っています。 変数は6個ぐらいあり 毎回変えるのは面倒なので・・・ (スパイラルモデル方式??といっても使うのは私自信ですが・・・)

  • 配列変数の宣言「その2」

    「その2」 「その1」でも述べましたが、配列変数の宣言の仕方は2種類あると思います。 (1)・・・ int hairetu[]; (2)・・・ int [] hairetu; この宣言をした後、init()メソッドを使いこの2つの配列変数の範囲(?)を指定したいと思います。 (1)の指定方法・・・ hairetu = new int[10]; (2)の指定方法・・・ hairetu[] = new int[10]; (2)を指定するときは(1)の指定方法が使えませんでした。これはなぜでしょうか? 逆に、(1)を指定するときには(1)は配列変数であるにもかかわらず、[] なしでも指定ができるのでしょうか? 知っていれば教えてください。

    • ベストアンサー
    • Java
  • 配列変数に格納したデータを計算する方法はありますか?

     簡単な例ですが、例えばB列にあるデータの平均値を求めるときに以下のようにしています。 sub 平均計算()   Dim X(1 To 1000, 1 To 1) As Variant, i as Integer   For i = 10 To 1000     X(i, 1) = WorksheetFunction.Average _          (Range(Cells(i - 9, 2), Cells(i, 2)))   Next   Range(Cells(1, 1), Cells(1000, 1)) = X End Sub  ここで処理速度改善のため、B列のデータを別の配列変数Yに格納してから平均値を求めるというようなことをしたいのですが、そんなことは可能でしょうか?イメージとしてはこんな感じです。   Y = Range(Cells(1, 2), Cells(1000, 2))   for i = 1 to 1000     X(i, 1) = WorksheetFunction.Average _          (Range(Y(i - 9, 2), Y(i, 2)))   Next  当然これはエラーになってしまいますが、このようなことを可能にする方法があれば、どなたか教えてください!よろしくお願いします。

  • 配列について

    配列の要素数をinteger型にいれたいのですがどうしたらいいですか? 例   Dim A() As String   Dim B AS Integer       A = "あ","い","う" Aの要素数3をBに入れたいのです。 この配列の作りかたもあっているか分かりませんがよろしくお願いします。

  • Excel2007VBA配列変数の宣言について

    ●質問の主旨 (1)以下のコードのプロシージャを実行すると 12行目の変数myArrが選択され、「配列に割り当てられません」と エラーメッセージが返されます。これはなぜでしょうか? (2)(1)の原因は5行目の変数myArrの宣言について問題があるよう 気がしますが、どうすればいいのか分かりません? 以上2点について、1つだけでもご助言いただければ幸いです。 ご教示よろしく願いします。 ●質問の補足 下記のコードは「各支社の成績」(画像の下部)を 「業務成績通知書」(画像上部)に成績欄に差し込んで 各支社ごとのワークシートを印刷するためのコードです。 画像上部のワークシート名→差込印刷TARGET 画像下部のワークシート名→data ●コード Option Explicit Sub オートシェイプ1_Click() Dim myTar As Worksheet 'ワークシート差込印刷(ターゲット)のオブジェクト変数 Dim myDat As Worksheet 'ワークシートdataの配列変数 Dim myArr(6, 4) As Range Dim y As Integer '印刷するシート数のオブジェクト変数 Dim myTem As Range '印刷するアクティブシートのオブジェクト変数 Dim n As Integer '差込数の数 Dim target_name As String '差込名 'ワークシート差込印刷(ターゲット)をオブジェクト変数に代入 Set myTar = Worksheets("差込印刷TARGET") Set myDat = Worksheets("data") 'ワークシートdataをオブジェクト変数に代入 myArr = myDat.Range("B2:G6") '印刷範囲のセル範囲を配列変数に代入 For y = 1 To 5 '繰り返し myTar.Copy after:=myDat 'ワークシート差込印刷のコピーをワークシートdataの後に配置 Set myTem = ActiveSheet 'アクティブシートを変数myTemに代入 myTem.Name = "印刷中" 'コピーされたワークシートの名前は「印刷中」とする For n = 1 To 6 '差込名に「ターゲット番号」を代入 target_name = "TARGET" & n '印刷中シートの「ターゲット番号」のセルに支店ごとのデータ(配列変数)を代入 myTem.Cells.Find(target_name).Value = myArr(y, n) Next myTem.PrintOut 'アクティブシートの印刷 Application.DisplayAlerts = False '画面警告表示を非表示 myTem.Delete '「印刷中」のシートを削除 Application.DisplayAlerts = True '画面警告表示を非表示を元に戻す Next End Sub

  • 配列の格納方法

    VBEXPRESS超初心者です。配列を格納する方法を調べたらHELPで、 Dim players() As String = {"Dan", "Fred", "Bart", "Carlos", _ "Ty", "Juan", "Jay", "Sam", "Pedro"} Dim i As Integer = CInt(Textbox1.Text) MsgBox(players(i) & " is on first base.")とありましたが、 100行のCSVまたはTxtデータをいちいち””で書かなくても格納する方法はどうすればいいのですか?  基本的なことですいません。 なかなかHelpだけではひとつを知るのに丸一日費やしますので当分の間ご勘弁ください。  

  • VBAの変数について

    VBAでUserFormからデータを入力します。 入力された各データをTarget1~Target20に代入します。 各Targetにデータが入っている場合は、配列K(i)に「1」を格納します。 そこで、Target "1"~"20" を変数iであらわしたいのですが、どのように表現したらよいのでしょうか。 Dim i As Integer Dim K(20) As Integer Target1 = TextBox1.Value Target2 = ComboBox1.Value : : Target19 = TextBox12.Value Target20 = ComboBox8.Value For i = 1 To 20 If 『  ?   』 <> "" Then K(i) = 1 EndIf Next i

  • VB.net 引数で配列変数を渡す際の要素数

    VB.net 2010 の質問です。 配列変数を他のプロシージャに引数で渡す際の、配列変数の要素数をあらかじめ宣言していないとエラーになります。 Dim Hairetsu() As String ' ←エラー Dim Hairetsu(100) As String ' ←正常 Public Sub aaa(ByRef Hairetsu() As String) Hairetsu(0) = "Test" '←正常の場合と、エラーの場合 End Sub Hairetsu(100) のように、要素数を宣言していると、エラーにならないのですが、 プログラム中、要素数がどこまで増加するか、分かりません。 Hairetsu()のように、要素数未確定の配列変数を渡すことは出来ないのでしょうか。 ご存知の方がいらっしゃいましたら、なにとぞアドバイスの程、よろしくお願いいたします。