
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の宣言は要らないのですが、
これを省くとエラーになってしまいます。
この部分も正しい使い方ではないように思うのですが、
ご教授頂ければ幸いです。
No.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 …
Gab_km様ご回答ありがとうございました。
こちらの方法でも思い通りの状態になりました。
おっしゃる通り入力時に便利になる点を除いたら
Structureである意味がほとんどない使い方のようですので、
次の機会にはClassについて勉強してみたいと思います。
どうもありがとうございました。
No.1
- 回答日時:
構造体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
といった具合です
redfox63様ご回答ありがとうございます。
お教え頂いた方法で思い通りの状態になりました。
また、zzzの部分が不要という疑問も解決しました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
End Sub が必要です。
-
フォートランのエラーについて...
-
対応する関数ヘッダーがありません
-
Delphiでif文がうまく書けないです
-
LINK : warning LNK4039: secti...
-
43:syntax error at end of input
-
他クラスからForm1内コントロル...
-
HEW3とBorlandC++でクラス定義...
-
ISLispのsetq関数について教え...
-
特定のPCだけ動作しないVBAマク...
-
一つのTeratermのマクロで複数...
-
エクセルで特定の列が0表示の場...
-
メッセージボックスのOKボタ...
-
配列数式の解除
-
教えて下さい
-
Excel マクロ VBA プロシー...
-
TERA TERMを隠す方法
-
Excel_マクロ_現在開いているシ...
-
Excelのセル値に基づいて図形の...
-
エクセルに張り付けた写真のフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
End Sub が必要です。
-
Excel VABについて 下記記述が...
-
フォートランのエラーについて...
-
intel fortranのエラーで困って...
-
他クラスからForm1内コントロル...
-
ラズパイ上の、pythonのエラー...
-
初歩的な質問ですが・・・
-
プロシージャ名のところでエラ...
-
python プログラミング vim
-
C言語の質問です。
-
Texに詳しい方よろしくお願いい...
-
構造体のポインタ参照
-
C++のことで・・教えてください。
-
VBでエラー'ActiveX component ...
-
ダブルコートのエスケープ
-
ISLispのsetq関数について教え...
-
typedef による2重定義
-
43:syntax error at end of input
-
解説サイトに従ったfortran並列...
-
コンパイル時のエラー
おすすめ情報