• ベストアンサー

VB6 配列を初期化したい

VB6でループさせて配列に値を入れて、計算させて最終的に求めたい値をRとします。そのときループで繰り返すためか同じ配列に値を入れてどんどん値がでかくなりRの値がおかしくなってしまいます; おそらく問題は一回前に入れた配列がそのままのこってしまってるからなのだと思うのですが; 配列の中の値をクリアする方法はないものでしょうか? 一応、配列=0として初期化しようとしても値は変わらず前のが残ったままになってしまっています; どなたかわかる方いらっしゃいましたらご回答宜しくお願いします その他何かいい方法があればそれも教えていただけたらと思います

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

  • ベストアンサー
  • don_go
  • ベストアンサー率31% (336/1059)
回答No.2

Eraceステートメントを使用   Dim a() as Long   Dim s(100) as String   Dim x() as Long   Erase a     ’要素が0になる   Erase s     ’要素が""になる   Redim x(100) as Long   Erase x      ’メモリを解放 注)VB2005の場合は動作が異なるので注意して下さい。

keybrade
質問者

お礼

さっそくのお返事ありがとうございます<(_ _)> なるほどEraseを使えばいいんですね 2005とは動作が異なるという貴重なアドバイス 本当にありがとうございます don_goさんのアドバイスを参考に再度挑戦してみたいと思います お忙しい中回答ありがとうございます<(_ _)>

その他の回答 (1)

  • usokoku
  • ベストアンサー率29% (744/2561)
回答No.1

sub main() call tekito(Rの配列の大きさ,,,) IF (サイド計算する場合) then call tekito(Rの配列の大きさ,,,) end if end sub tekito(Rの配列の大きさ,,,) dim R() redim R(Rの配列の大きさ) call 配列Rの中身の設定(R()) call 配列Rの中身の計算 IF (初期化が必要な場合) then redim R(Rの配列の大きさ) call 配列Rの中身の設定(R()) call 配列Rの中身の計算 end if end sub ローカル変数として設定して、初期化し、実行して、サブルーチン終了でローカル変数を破棄する破棄する 方法と redim を使う方法 があります。dim resum(でしたか)は配列宣言が定数である必要があるので、汎用を考えると使えません。

keybrade
質問者

お礼

お返事ありがとうございます<(_ _)> なるほどローカル変数としてあとはコール文をうまく使っていく方法がだぶらなくて安全そうですね 注意事項まで書いていただきありがとうございます これを参考に頑張ってみたいと思います お忙しい中ご回答いただきましてありがとうございます<(_ _)>

関連するQ&A

  • VBで配列の初期化について

    VBやVBAで1次元・2次元配列を、プログラムの中の 値の(リテラル的)記述で初期化する方法はどうすれば良いのでしょうか。1次元配列にはx=Array()で代用してきましたが、さて、行と列がある表のような、値データを2次元配列にセットしようとして、ハテナと行き詰まりました。配列名(要素)=値を要素数だけ繰り返す方法以外に、例えば A[][]={(a、b、c)(d、e、f)(g,h,i)}のような、書き方は出来ないのでしょうか。 複数のArrayをArreyの()内に入れてみましたがも上手く行かないようですが。 有り無しについて教えていただけたらと思います。 市販の解説書数書には触れた記述は見つかりませんでした。

  • ループ制御と配列変数について

    VBでプログラミングを作っています。 値を入力して計算させ、返ってきた結果を足していくというものです。 普通ならループ制御でやるのですが、一回一回入力する値が違うためにボタンでスタートさせます。 この場合「スタートと計算が同じボタン」、「計測回数は決まっていない」ということからも、手詰まりになってしまいました。 ループと配列変数であろうことはわかるのですけども… 上記の要件を基に、計算結果を一回ごとに変数に入れて全て足すためには、どうプログラムを組めばいいでしょうか?

  • 2次元配列の初期値

    こんにちは VBで2次元配列に初期値をまとめて入れる方法がわからなくて困っています。 簡単なはずなのにわかりません。 教えてくれるようお願いします。

  • VBで配列の差分を取りたいのですが

    VB2005を使用しています。 エクセルに2つのシートには更新前と更新後のデータがあって、 それの差分を取るために一度2次元配列に確保してから処理を行い たいのですが、配列を入れ子にして順にループ、比較させると時間がかかりすぎてしまいます。 どうしたらよいのでしょうか?

  • 配列から初期値を探す方法

    よろしくお願いします。 ある計算を30回ほど繰り返して、その計算結果を 順次配列に格納することとします。 *仮に初期値を20とします。。 計算後その配列を昇順にソートした結果 @resurt = [1 , 3 , 5 , … , 20 , 35 , … , 400] となったとき、初期値のいる位置(何番目にあるか?) を求めるにはperlでどのようにコーディングすればよろしいでしょうか? 大変申し訳ございませんが 皆様のご助言、よろしくお願いします

    • ベストアンサー
    • Perl
  • VB2005 コントロール配列について教えていただけませんか?

    現在VB2005を用いてプログラムを行なっている初心者です。 ここのサイトでVB2005ではコントロール配列は使用できないことを知りました。そこで、例えばフォーム上にTextBoxを5個配置して、各TextBoxに入力された値を配列に格納するのにはどのようにすれば良いでしょうか? data(0) = textbox1.text data(1) = textbox2.textと一つずつやるしかないでしょうか・・・ For文などを用いて簡単にできる方法を教えてください。 よろしくお願い致します。

  • int型配列の一括初期化

    現在、ある配列をfor()でループさせて初期化させていますが、もっと高速に初期化できる方法はないでしょうか? //配列の初期化 int Xi[256]; for(i = 0; i < 256; i++){    Xi[i] = 0; } 今後、配列数を増やす予定なので高速に初期化できるものはないか探しています。 速度重視でよろしくお願いします。

  • 配列の初期化に時間がかかります・・。

    グローバルで宣言した構造体の配列に 2万件ほどの情報をかくのうしました。 あるタイミングでその情報をクリアしたいのですが ものすごく時間がかかります。  Redim AAA(0) でクリアしても時間かかるし(300秒)  Erase AAA でもかなりの時間がかかります。(350秒) これ以外に配列の初期化方法をご存知でしたら 教えてくださいよろしくお願いします。  

  • VB2008での配列の初期化方法

    VB2008での配列の初期化方法 様々なサイトなどを見て、配列を宣言する時に初期化する方法を知ってこんな風なコードを書いて、配列の初期化を試みました。 書いたコード Option Strict On Public Class Form1() Private AImage As Image = (My.Resources.AImage1 As Image, My.Resources.AImage2 As Image,My.Resources.AImage3 As Image,My.Resources.AImage4 As Image, My.Resources.AImage5 As Image,My.Resources.AImage6 As Image, My.Resources.AImage7 As Image) 後略 もちろんAImage1~7はリソースで読み込んでありますし、End Classもずっと下の方に書いてあります。 ここで、「・・・(My.Resources.AImage1 As Image,・・・」のAsの部分にだけ波線が引かれて、「')' が必要です。」というエラーが出ました。 最後を「)」で終わっているのに、なぜこのエラーが出るのでしょうか。使用言語はVitualBasic2008です。文法等も含めて、改善点を教えていただければ幸いです。

  • VB.NET 配列の格納

    VB.NET 配列の格納 エクセルから任意の列の値を格納したいのですが・・・ 現在、値の取得は以下のようなFor文ループを書いています。 各値を一時記憶(格納)したいのですが、どう書けばいいのでしょうか。 また、各列内で重複する値があった場合、重複を避けて値を取得したいのですが どう書いていいかわかりません。 初歩的な質問で申し訳ありませんが、宜しくお願いします。 PN()→G列の各セルの値の変数 JN()→H列の各セルの値の変数 の変数GYO→シートの最終行 j = 1 For i = 1 To GYO '【リストのG列から部品番号を取得】 PN(j) = xlSheet.Cells(i, 7).Value '【リストのH列から部品和名を取得】 JN(j) = xlSheet.Cells(i, 8).value Next

専門家に質問してみよう