プロが教える店舗&オフィスのセキュリティ対策術

Publicの宣言をしてStructureを使いたいのですが、
2重になっているStructureを使う正しい方法を教えて頂きたいです。

現在
Structure OYA
Dim zzz As String
Structure KO_1
Dim No1 As String
Dim No2 As String
Dim No3 As String
End Structure
End Structure

Public TESTOYA As OYA
Public TEST_1 As OYA.KO_1

Sub ABCDE()
TEST_1.No1 = 1
TESTOYA.KO_1.No1 = 1
End Sub

というようになっているのですが、
Sub ABCDE()内の
TESTOYA.KO_1.No1 = 1
という使い方をしたいのですが、この状態だとエラーになってしまいます。
TEST_1.No1 = 1 とすれば大丈夫なのですが、これだと
OYAを入力してメンバを出すことが出来ないので、2重にする意味がなくなってしまいます。
KO_1は実際はKO_50くらいまであって
実際は連番ではないので、OYA.と入力したら、KOのメンバが出て
その後、No1などのメンバが出て欲しいです。
(入力しやすいように)

この様な使い方があれば正しい記入方法をご教授願えないでしょうか。
それと、最初の変数zzzの宣言は要らないのですが、
これを省くとエラーになってしまいます。
この部分も正しい使い方ではないように思うのですが、
ご教授頂ければ幸いです。

A 回答 (2件)

Structureの定義の中に別のStructureの定義を書かないようにしましょう。


別々に定義して、親のStructureの定義の中に、メンバ変数として、子のStructureを用意してあげてください。

例えば、
Public Structure MonthDay
Public intMonth As Integer
Public intDay As Integer
End Structure

Public Structure YearMonthDay
Public intYear As Integer
Public monthAndDay As MonthDay
End Structure


こんな風にすれば、おそらくできるはずです。

でも、わざわざStructureの中にStructureを入れる必要性はないかも知れません。
Structureで定義する方がいいのか、Classとした方がいいのか、いろいろ調べて実装してみるといいと思います。

参考URL:http://msdn.microsoft.com/ja-jp/library/2hkbth2a …
    • good
    • 0
この回答へのお礼

Gab_km様ご回答ありがとうございました。
こちらの方法でも思い通りの状態になりました。
おっしゃる通り入力時に便利になる点を除いたら
Structureである意味がほとんどない使い方のようですので、
次の機会にはClassについて勉強してみたいと思います。
どうもありがとうございました。

お礼日時:2008/11/11 00:35

構造体OYAに 構造体KO_1のオブジェクトをメンバーとして持たせましょう



Structure OYA
  dim zzz as String
  Dim objKo as KO_1
  Structure KO_1
    dim No1 as String
    dim No2 as String
    dim No3 as String
  End Structure
  ' これを追加
End Structure

Public TESTOYA As OYA

Sub ABCD()
  TESTOYA.objKo.No1 = "Test"
End Sub
といった具合です
    • good
    • 0
この回答へのお礼

redfox63様ご回答ありがとうございます。
お教え頂いた方法で思い通りの状態になりました。
また、zzzの部分が不要という疑問も解決しました。
ありがとうございました。

お礼日時:2008/11/11 00:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!