No.3ベストアンサー
- 回答日時:
ごめんごめん。
(1)は、書き間違えただけ。Redim a(255, 255, 255): Redim b(255, 255, 255)
(1),(2)ともに、Variant型変数の中には配列を格納できるってだけの話です。ややこしくなるので、あまりオススメはしませんが。
まぁ、試してみてください。
No.2
- 回答日時:
>> ANo.1の補足
VBAは配列操作弱いので、ループ使わないと厳しいです。
かなり強引になりますが・・・
(1) 全コピは、動的配列にすれば可能
Dim a, b, c
Redim a(255, 255)
Redim b(255, 255)
a(1,1,1) = 1
b = a 'aの中身を全コピ
c = a 'aの中身を全コピ
変数の中に配列が入った2重構造のイメージ。a,bはVariant型なので代入が効きます。Redimし直せば値クリア。
(2) 部分コピーは、配列を入れ子にすることで・・・
Dim a(255, 255), b(255, 255), z
Redim z(255)
for i = 0 to 255
for j = 0 to 255
a(i, j) = z
b(i, j) = z
next
next
a(1, 1)(1) = 1
b(1, 1) = a(1, 1) '1,1,n列のみコピー
部分コピーはできませんが、入れ子にすれば、代入になります。
(1),(2)の組み合わせで、ある程度は誤魔化しがききます。ただ、無駄に複雑ですし、添え字1~100のみコピーとかはどーしてもムリ。
素直にループしても数秒なので、処理の工夫でコピー頻度を減らした方が良いと思います。
ありがとうございます。
forループでの書き方は分かっているので、一つ目の方法をもう少し教えていただけないでしょうか?
Redim a(255, 255)
Redim b(255, 255)
で二次元配列に設定しておいて、
a(1,1,1) = 1
を代入しようとしても3次元目は配列がセットできていないのではないでしょうか?
更に
b = a 'aの中身を全コピ
c = a 'aの中身を全コピ
で配列をコピーしようとしても
cは配列がセットできていないのではないでしょうか?
No.1
- 回答日時:
ループくらいは使いこなせるようになりたいですね。
。For i = 0 to 256
For j = 0 to 256
For k = 0 to 256
a(i, j, k) = 0
Next
Next
Next
配列や変数は、Eraseで初期値に戻せます。
Dim a(256,256,256) 'Variant型:初期値Empty
a(1, 1, 1) = 1
Erase a '全部Emptyにもどる
動的配列の場合、Eraseで要素数(Redim)ごと初期化されるので注意してください。
初期値は、データ型によって異なります。初期値は、Variant型(型指定なし)ならEmpty、数値型なら0、文字列なら""。Emptyは0や""と同じ扱いができるので、あまり意識しなくて良いですが。
任意の値を入れるならループ。クリアだけならEraseでどうぞ。
ありがとうございます。
それと
Dim a(256,256,256)
Dim b(256,256,256)
として、ループを使わずに
配列aをbに全コピーあるいは、任意のデータ列だけコピーする方法があれば教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロについて教えてください。 4 2023/06/06 09:06
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Microsoft ASP プログラミング関係で質問です。 3 2022/10/11 16:06
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) 数列の数値補間 2 2022/10/27 16:38
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- Java Java モンスターブリーダー 1 2023/02/05 09:44
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
エクセルでエラーが出て困っています。
Excel(エクセル)
-
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
-
4
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
7
VBAの再計算が反映されない件につきまして
Visual Basic(VBA)
-
8
VBAで配列の計算
Excel(エクセル)
-
9
VBA 1次元配列を2次元に追加する
Visual Basic(VBA)
-
10
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
11
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
12
【Excel VBA】先頭の「0」飛びを埋める方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2つ以上の変数を比較して最大数...
-
配列数式の解除
-
【MATLAB】任意の多次元配列か...
-
VBA 1次元配列を2次元に追加する
-
FORTRANのCOMMON文
-
ArrayListの初期値に二次元配列...
-
配列を任意の数値で埋める方法
-
for each の現在の配列ポインタ...
-
VBAで近似曲線の係数取得
-
VBA Match関数の限界
-
Dim は何の略ですか?
-
ListViewで、非表示列って作れ...
-
VBA 3文字ずつ、配列に入れたい
-
空白セルへの値反映と既存値と...
-
2次元動的配列の第一引数のみを...
-
配列変数の添字が範囲外ですと...
-
エクセルで特定の列が0表示の場...
-
2つのマクロでチェックボックス...
-
UserForm1.Showでエラーになり...
-
Excel マクロ VBA プロシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
VBA 1次元配列を2次元に追加する
-
特定のセル範囲で4文字以上入力...
-
for each の現在の配列ポインタ...
-
VBのFunctionで、配列を引数...
-
subの配列引数をoptionalで使う...
-
VB6 配列を初期化したい
-
ListViewで、非表示列って作れ...
-
配列変数の添字が範囲外ですと...
-
Excel-VBAの配列「Public Const...
-
2次元動的配列の第一引数のみを...
-
VBAで近似曲線の係数取得
-
VLOOKUP関数で、一番下...
-
配列に同じ値を入れる方法
-
エクセルで最小値から0を除く方法
-
linest関数に配列を渡す
-
配列を任意の数値で埋める方法
-
Dim は何の略ですか?
-
配列内の内容を全て表示する方法
おすすめ情報