
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も見ています
-
配列に同じ値を入れる方法
Excel(エクセル)
-
動的配列が存在(要素が有る)か否かを判定できますか?
Visual Basic(VBA)
-
Boolean型配列中のTrueの有無を判定したい(VB2005)
Visual Basic(VBA)
-
-
4
Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はあり
Visual Basic(VBA)
-
5
配列でデータが入っている要素を求める方法
Visual Basic(VBA)
-
6
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
7
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
8
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
9
エクセルVBAで配列内に空白データを入れる場合
その他(Microsoft Office)
-
10
エクセルのシート連番の振り直し
Excel(エクセル)
-
11
subの配列引数をoptionalで使う方法
Visual Basic(VBA)
-
12
VBAの配列サイズとメモリに関して
Visual Basic(VBA)
-
13
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
エクセルのVBAコードと数式につ...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
【VBA】 結合セルに複数画像と...
-
vbsでのwebフォームへの入力制限?
-
算術演算子「¥」の意味について
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
vb.net(vs2022)のtextboxのデザ...
-
ダブルクリックで貼り付けた画...
-
VBAの「To」という語句について
-
VBAでユーザーフォームを指定回...
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】変数を使った、文字...
-
エクセルのVBAコードについて教...
-
ワードの図形にマクロを登録で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
【マクロ】並び替えの範囲が、...
-
エクセルの改行について
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
エクセルのVBAコードと数式につ...
-
エクセルのVBAコードについて教...
-
[VB.net] ボタン(Flat)のEnable...
-
【マクロ】変数を使った、文字...
-
改行文字「vbCrLf」とは
-
質問58753 このコードでうまく...
-
【マクロ】シートの変数へ入れ...
-
ワードの図形にマクロを登録で...
-
算術演算子「¥」の意味について
おすすめ情報