![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
VB6で、一次元配列と二次元配列の相互コピーをしたいです。
(1)元々下記のような宣言をもつ配列がありました。
Public Type TKey
no As String
id As String
code As String
atr() As String
End Type
Public Type tr
Key As TKey
atr() As String
abc As Boolean
End Type
Public gtr() As tr
(2)コピー用に、下記のような二次元配列用宣言をつくりました。
Public Type TKey2
2no As String
2id As String
2code As String
a2tr() As String
End Type
Public Type 2tr
Key22 As TKey2
atr22() As String
abc22 As Boolean
End Type
Public g2tr() As 2tr
(3) (1)から(2)にデータを複製したり、
(4) (2)から(1)にデータを複製したいです。
今は、下記のように面倒くさいことをしています。
dim gtr(maxcnt)
ReDim Preserve g2tr(500, maxcnt)
ループ
g2tr(cnt, i).Key22.2code = gtr(i).Key.code ・・・(3)
gtr(i).Key.code = g2tr(j, i).Key22.2code ・・・(4)
今は上記を全ての宣言の配列に実行しています。
なにかもっと効率のよい方法はないでしょうか。
(1)の配列は、1~500くらいはあり、不定です。
No.2ベストアンサー
- 回答日時:
構造体のメンバーが同じ構成ならばランダムアクセスファイルを使ってベタに流してやればいいのでは
' ファイル番号は FreeFileで取得したほうがいいかも
Open "sample.bin" for random as #1
' 書き出す位置は適宜修正してください
for n = 0 to 20
' レコード番号を省略すると 1番から順に出力します
put #1,,g2tr(n,1)
next
' 読み出す位置の修正も ・・・
for n = 0 to 20
' レコード番号は1番からなので n+1で指示
Get #1, n+1, gtr(n)
next
close
No.1
- 回答日時:
のような質問回答があるが、参考になりませんか。ここまでは通常の有名な話。
ー
配列で次元が違うものは、1つの代入式のような表現では無理でしょう。
実際コンピュターが内部でやることは、1つづつ両配列間で対応する要素に代入することは変わらなくて、プログラムコーディング上の見かけで、そういう代入の体裁に持ち込めるかどうかだが、新しい言語概念を作る(コピーメソッドを作るようなこと)ようなことになるだろうから、VB6では無理と思う。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VB6.0-整数と余りを求める
Visual Basic(VBA)
-
コモンダイアログコントロールがコンポーネントにありません
Visual Basic(VBA)
-
VB6 配列を初期化したい
Visual Basic(VBA)
-
-
4
Visual Basic 6.0 コンボボックスのChangeイベントが発生しません
Visual Basic(VBA)
-
5
VB6でユーザー定義型がNothingかどうか調べるには?
Visual Basic(VBA)
-
6
配列を関数に渡す方法
Visual Basic(VBA)
-
7
VBの「As String * 128」とは?
Visual Basic(VBA)
-
8
VB.net 引数で配列変数を渡す際の要素数
Visual Basic(VBA)
-
9
配列の重複する値とその個数を取得したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
構造体配列内の文字列検索のよ...
-
Dir関数で読み取り順を操作でき...
-
定数配列の書き方
-
vba フィルター 複数条件 3つ以...
-
VB6のメモリ解放に関して
-
複数のtextboxの処理を一括で行...
-
Redim とEraseの違いは?
-
COBOLの基本的な事なので...
-
配列の中から最大値だけ取り出...
-
VB6でやると構造体の配列になる...
-
OutOfMemoryExceptionの回避策...
-
Excelのメモリ(配列)の上限は2G...
-
Excel2010のinputboxで複数デー...
-
VBScript で ADO Streamオブジ...
-
C++で作成したDLLにVBAから配列...
-
デバイスマネージャーの一覧取得
-
配列の中の最大値とそのインデ...
-
配列をランダムに並び替えても...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
vba フィルター 複数条件 3つ以...
-
Dir関数で読み取り順を操作でき...
-
エクセルでXY座標に並べられた...
-
配列の中の最大値とそのインデ...
-
VB.NETの配列にExcelから読み込...
-
定数配列の書き方
-
Excel2010のinputboxで複数デー...
-
大量の変数を定義するにはどう...
-
構造体配列の特定のメンバーをF...
-
構造体配列内の文字列検索のよ...
-
Redim とEraseの違いは?
-
Segmentation Fault (メモリ制限?)
-
OutOfMemoryExceptionの回避策...
-
VBAでMODE関数をつくる
-
COBOLの基本的な事なので...
-
Excelのメモリ(配列)の上限は2G...
-
コンボボックスのインデックス...
-
VB6のメモリ解放に関して
おすすめ情報