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 6.0 コンボボックスのChangeイベントが発生しません
Visual Basic(VBA)
-
配列を関数に渡す方法
Visual Basic(VBA)
-
構造体をコレクションに入れて扱いたいのですが…
コレクション
-
-
4
コモンダイアログコントロールがコンポーネントにありません
Visual Basic(VBA)
-
5
VBの画面サイズについて
Visual Basic(VBA)
-
6
VB6 配列を初期化したい
Visual Basic(VBA)
-
7
VB6.0-整数と余りを求める
Visual Basic(VBA)
-
8
VB.NET DataGridView 縦スクロールバーを常に表示
Visual Basic(VBA)
-
9
2次元動的配列の第一引数のみを可変にする
Visual Basic(VBA)
-
10
VB.net 引数で配列変数を渡す際の要素数
Visual Basic(VBA)
-
11
VBの「As String * 128」とは?
Visual Basic(VBA)
-
12
VB6.0でダブルクォーテーション
その他(ソフトウェア)
-
13
配列の重複する値とその個数を取得したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C言語の enum の使い方
-
Excel2010のinputboxで複数デー...
-
定数配列の書き方
-
VBAテキストボックスについて
-
順列をランダムに発生するプロ...
-
コンボボックスのインデックス...
-
配列のペースト出力結果の書式...
-
母親の血液中の胎盤遺伝
-
VBA フォルダ内のファイルを、...
-
VBAの動的配列について
-
構造体配列内の文字列検索のよ...
-
2次元配列の初期値
-
コードの簡略化 VBA
-
テキストボックの文字を一行ず...
-
dimを使わずにredimを使う場合
-
C#でbyte配列から画像を表示さ...
-
VBAにて、配列のデータを一度に...
-
Dir関数で読み取り順を操作でき...
-
Segmentation Fault (メモリ制限?)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Excel2010のinputboxで複数デー...
-
エクセルでXY座標に並べられた...
-
構造体配列の特定のメンバーをF...
-
定数配列の書き方
-
コンボボックスのインデックス...
-
OutOfMemoryExceptionの回避策...
-
Dir関数で読み取り順を操作でき...
-
CheckBoxの配列化
-
構造体配列内の文字列検索のよ...
-
COBOLの基本的な事なので...
-
Redim とEraseの違いは?
-
VBAで配列引数を値渡しできない...
-
2次元配列の初期値
-
配列の中の最大値とそのインデ...
-
VB6からの移行したいけど、VB.N...
-
大量の変数を定義するにはどう...
-
VB6のメモリ解放に関して
おすすめ情報