• ベストアンサー

エクセルのマクロ 配列の通し番号に変数

i=0 : r(i)="000" i=1 : r(i)="001" エクセルのマクロで上記のように 配列変数に代入する時に 通し番号に変数は使えないのですか?

  • fa46
  • お礼率49% (261/527)

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

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

使えます。 Option Base 1 Sub test01() Dim a(10) a(1) = "a" a(2) = "b" a(3) = "c" a(4) = "d" a(5) = "e" For i = 1 To 5 MsgBox a(i) Next i End Sub Sub test02() Dim a(10) b = Array("001", "002", "003", "004", "005") For i = 1 To 5 a(i) = b(i) Next i For i = 1 To 5 MsgBox a(i) Next i End Sub を事行してみればわかります。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

使えますよ。 使えないと思ったのはなぜですか? または、どういう状況で使えなかったのでしょうか?

関連するQ&A

  • エクセルマクロ 異なる変数でのループ

    エクセルマクロのループ処理に関して、 異なった変数を使いループをさせたいです。 例えばA~Dまでの変数があり、変数Zに順々に変数を代入して処理をさせたいです。 ループ開始 Z = [A-D] (変数Zを使う処理) ループ終了(繰り返し) 1回目にA 2回目にB ・ ・ といったイメージです。 初歩的な質問で恐れ入ります。 よろしくお願いします。

  • 配列と変数について

    練習のため家庭の収入、支出のバランスを計算するプログラミングを作っています。その為変数宣言についてなのですが以下のようにすると配列をcoutした時にint の変数に代入した値と一致しません。意味不明な数字が表示されます。この時何が起きているのでしょうか(この数字はどこから?各配列には何が入っているのでしょうか?)。 #include <iostream.h> int main (){ int income, loan, expenditure, saving; int cluster []={income, loan, expenditure, saving}; income=100, loan=200, expenditure =300, saving = 500; cout << cluster [0]<<endl<<cluster [2]<<endl<<income<<endl<<expenditure; return 0; } しかしながら以下のように変数の初期化を配列への代入の前に行うと各配列と変数の値が一致します。何故ですか? #include <iostream.h> int main (){ int income, loan, expenditure, saving;      income=100, loan=200, expenditure =300, saving = 500; int cluster []={income, loan, expenditure, saving}; cout << cluster [0]<<endl<<cluster [2]<<endl<<income<<endl<<expenditure; return 0; } 2.今回配列を使ったのはこれらの変数をまとまりとして取り扱ったほうが便利だと思ったからです。この様な場合クラスを作ったほうが良いのでしょうか?メモリ的に配列の方がまとまりが良いように感じましたが、そんな考慮は必要ないのでしょうか? 3.変数名を表示することは出来ますか?上記のincome、savingなどです。

  • エクセルのVBAでオブジェクトの配列変数は使えますか?

    VBですとオブジェクトの配列変数というか、コピーしたときに自動的に配列になってしまいますが、エクセルのVBAの場合でオブジェクトの配列変数は使えますか? なにをしたいかというと、ボタンが多すぎて一つ一つにプログラム定義は面倒、そこで配列にしてまわすことにしたいのですが、エクセルで可能でしょうか。 どなたかお願いします。

  • 配列を使わずに、数字(連番)を使用した変数に値を代入したい。

    配列を使わずに、数字(連番)を使用した変数に値を代入したい。 お世話になっております。 配列を使わずに、数字(連番)を使用した変数($a1,$a2,$a3・・・)に、 forループを使って、値を代入したい。 #================================= for($i;$i<10;$i++){ $a??? = 10; #←ここがわかりません。 } #================================= どなたかご存知の方、ご教授ください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 配列番号の取得について

    ここに配列 SheetName(i) があります。 For i = 0 To 10 SheetName(i) = ActiveWorkbook.Sheets(i + 1).Name Next i でシートの名前を配列に入れ込みます。 フォームのコンボボックスを用いてセレクトされたSheetName(i) の変数iの値(配列番号)を取得することは可能なのでしょうか? すみませんが、お助け下さい。 よろしくお願いします。

  • エクセル マクロで配列のインデックスを日付にできますか?

    エクセル マクロで配列のインデックスを日付にできますか? エクセルでマクロを作成中ですが,日付ごとにデータをまとめたくて、日付を配列のインデックスにしたいと思ってますが,そのまま配列に組み込んでもエラーで止まってしまいます。 なにかいい案はありますでしょうか?

  • 配列変数のアドレス

    C言語で、配列を宣言した場合、 char a[] = "hoge"; 変数aは初期化された配列の先頭番地を指しているのですが、この時、 変数aの中身も変数aのアドレス(&a)ともに上記の配列の先頭番地になっているようなのですが、 これによって、配列の変数aは読み取り専用で、書き換えられないということにしていると思っていいのでしょうか? ちなみに、 char *p = "fuga"; とした場合は、pと&pのアドレスは異なって、pの中身は書き換えられます。

  • EXCELマクロの変数の精度

    EXCELマクロの変数の精度について DIM 変数名 as long で精度は16ビットになるようですが、32ビットに精度を上げることができませんか。

  • EXCELで1から9999までの通し番号を5桁で表示させたいのですが!

    EXCELで1から9999までの通し番号を5桁で表示させたいのですが! 今は「1」「10」「100」「1000」「10000」「15000」と表示しています。 関数を使って下記のように5桁表示したいのですが。 例えば----「1」は「00001」、「10」は「00010」、「100」は「00100」 「1000」は「01000」、「15000」は「15000」のように!! 良い操作方法を教えてください。

  • エクセルマクロ(VBA)の変数について教えてください。

     仕事でエクセルを利用してファイルを作ることが多いのですが、関数とマクロに課題のある者です。  マクロはそんなに高度で複雑なものが現状、必要でないので記録マクロで事足りていますが、私のやり方は  1.手順を記録  2.マクロの実行  3.ステップイン機能でステートメントの動作を見る  4.無駄な構文を削除  5.エラー(デバッグ警告表示)修正  6.日々替わる取り扱いファイル、シート名をそこだけ置き換えて汎用性を持たせている。  7.さらに動作を加えたい時は新しいマクロ記録で構文を記録し、ベースマクロに構文を追加している  8.日々更新変動されるファイルは情報量の余裕をみて、ファイルが想定を超えないように作っている。  9.記述式マクロ(VBA)が十分出来るスキルが乏しい  と言うのが私のレベルですが、参考書、テキストを読んでいると必ず、『変数』Dimスペルというものが出てきます。この意味がもう一つよく分からないので、ツール→オプションのダイヤログボックス編集で『変数の宣言を強制をする』を外しています。  変数は実行の都度変わる値を扱ったり、代入すると言うことは何となく分かるのですが、完全に理解できてないので、(記述が分かりにくい)そこから前に進めません。  サンプル例はありますが、詳しく解説しているものが少ないです。『何故、こうなるか?』というのが抽象的な説明です。  『変数宣言を強制』にチェックを入れた場合、今まで、チェック無しで作ったマクロファイルは動作しませんか?  たまに自動メンバー表示機能から構文を挿入しますが、個々のプロパティやメソッド、コレクションなど記述構文は英語ですが、これを日本語に置き換えて理解できるようにしたいのですが、皆さんはどのようにされたのですか?  

専門家に質問してみよう