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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
コモンダイアログコントロールがコンポーネントにありません
Visual Basic(VBA)
-
Visual Basic 6.0 コンボボックスのChangeイベントが発生しません
Visual Basic(VBA)
-
VBの「As String * 128」とは?
Visual Basic(VBA)
-
-
4
構造体をコレクションに入れて扱いたいのですが…
コレクション
-
5
VB6 配列を初期化したい
Visual Basic(VBA)
-
6
VB6でユーザー定義型がNothingかどうか調べるには?
Visual Basic(VBA)
-
7
配列を関数に渡す方法
Visual Basic(VBA)
-
8
VB.net 引数で配列変数を渡す際の要素数
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
vba フィルター 複数条件 3つ以...
-
COBOLの基本的な事なので...
-
VB.NETの配列にExcelから読み込...
-
動的配列のメリット・デメリッ...
-
VBAのワークシート関数で配列の...
-
DBから取得した値を配列へ代入する
-
Excelマクロ:配列データからグ...
-
エクセルでXY座標に並べられた...
-
Excel2010のinputboxで複数デー...
-
Dir関数で読み取り順を操作でき...
-
RPG 配列宣言について
-
CheckBoxの配列化
-
構造体配列の特定のメンバーをF...
-
コンボボックスのインデックス...
-
まとめて宣言。まとめて使用
-
VBでの配列をEXCELに出力する方法
-
Variant型配列の文字コード変換
-
POSTデータの2次元配列
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
vba フィルター 複数条件 3つ以...
-
Dir関数で読み取り順を操作でき...
-
Excel2010のinputboxで複数デー...
-
配列の中の最大値とそのインデ...
-
構造体配列の特定のメンバーをF...
-
COBOLの基本的な事なので...
-
構造体配列内の文字列検索のよ...
-
コンボボックスのインデックス...
-
エクセルでXY座標に並べられた...
-
エクセル(VBA)の空白配列の削除...
-
Redim とEraseの違いは?
-
定数配列の書き方
-
VB6のメモリ解放に関して
-
CheckBoxの配列化
-
複数のtextboxの処理を一括で行...
-
Excelのメモリ(配列)の上限は2G...
-
大量の変数を定義するにはどう...
-
OutOfMemoryExceptionの回避策...
おすすめ情報