いくつかの構造体で変数を定義しています。
構造体が3つあるのですが(A,B,Cとする)
Aの構造体に定義されている変数に代入されているデータを
まるごとCの構造体の一部に代入することは可能でしょうか?
入れ子で定義をしてみたんですが、だめでした。
ご教授お願いします。
Aテーブル変数定義
Public Type "A"Table
A項目1 As String
A項目2 As String
A項目3 As String
End Type
Bテーブル変数定義
Public Type "B"Table
B項目1 As String
B項目2 As String
B項目3 As String
End Type
Cテーブル変数定義
Public Type "C"Table
C項目1 As String
C項目2 As String
C項目3 As String
C(A項目1) As String
C(A項目2) As String
C(A項目3) As String
End Type
Cテーブル変数の(A項目)部分にAテーブル変数に代入されているデータをごそっと
代入したいんです。(数個でしたら1個ずつ書きますが、100個単位なので、1行ずつ書けないんです)
私なら構造体Cの中に構造体Aを用意しておきますが。
編集 削除nanashi様
ご教授ありがとうございます。
構造体Cの中にAを用意するとわざわざ代入をする必要がないのですが、
構造体AはA単体で使用することがあるので、(各構造体配列を持っているので、配列番号が異なるため)別々の宣言が必要になりました。
処理を加えて今回の質問処理の作業が必要になったので、
策がありましたらご教授お願い致します。
ん??
私が言ってるのはこういう↓ことですよ?
Public Type "C"Table
C項目1 As String
C項目2 As String
C項目3 As String
A項目 As "A"Table
End Type
必要な時に必要な構造体Aを代入できますし、別に用意してある構造体Aも単体で使用できると思うのですが。
nanashi様
重ね重ねありがとうございます。
↓こういうことでしょうか?
入れ子を全くしたことがないので、nanashi様のお考えが
わかりませんでした。
このようにして入れ込むということは、
Public Type "C"Table
C項目1 As String
C項目2 As String
C項目3 As String
A項目1 As "A"Table
A項目2 As "A"Table
・
・
・
End Type
とATableの定義項目数分CTableの項目定義に
型を"ATable"に設定して入れ込むのでしょうか?
それとも、
Public Type "C"Table
C項目1 As String
C項目2 As String
C項目3 As String
A As "A"Table
End Type
型をテーブルにして1行でATableがすべて
入るということなのでしょうか?
ヘルプでもいろいろ調べましたがわかりませんでした。
よろしくお願致します。
やりたい事がよくわからないのですが、入れ子と言うのは、
Private Type UDT01
A As String
B As String
End Type
Private Type UDT02
C As String
D As String
E As UDT01
End Type
として、
Dim X As UDT01
Dim Y As UDT02
X.A = "X-AAA"
X.B = "X-BBB"
Y.C = "Y-CCC"
Y.D = "Y-DDD"
Y.E = X
Debug.Print Y.E.A
のような動作の事でしょうか?
魔界の仮面弁士様ありがとうございます。
初心者なもので、意味を理解するのがとても難しいです。
私のやりたい事です。
Aテーブル変数定義 Bテーブル変数定義
Public Type "A"Table Public Type "B"Table
A項目1 As String B項目1 As String
A項目2 As String B項目2 As String
End Type End Type
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Cテーブル変数定義
Public Type "C"Table
C項目1 As String
C項目2 As String
D項目 As "A"Table
E項目 As "B"Table
End Type
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Private Sub Command1_Click()
A.A項目1="Aの1"
A.A項目2="Aの2"
B.B項目1="Bの1"
B.B項目2="Bの2"
End Sub
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Private Sub Command2_Click()
C.C項目1="Cの1"
C.C項目2="Cの2"
D項目 = "A"Table
E項目 = "B"Table
End Sub
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Private Sub Command3_Click()
Msgbox "C"Table.D項目.A項目1
Msgbox "C"Table.E項目.B項目1
End Sub
Command1、Command2をクリックした後にCommand3をクリックすると
Msgbox表示で"Aの1" と出るような処理がしたいです。
初心者なので高度な処理なのですが、魔界の仮面弁士様の書いてくれた処理と
同じことなのでしょうか?
とりあえず、魔界の仮面弁士さんの書いたソースを実行してみてはいかがでしょうか。
実際に動かしてみればわかると思います。
あと、サンプルだからだとは思いますが、あげられたやりたいことですが、
ソースコードとしてはおかしいですよ?
やりたいことはわかりましたけれども。