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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AccessVBAでVLookupを使いたい
-
End Sub が必要です。
-
verilogでデマルチプレクサの作...
-
Excel VBA: UserForm.Show で実...
-
Makefile と <math.h>
-
フォートランのエラーについて...
-
UserForm1.Showでエラーになり...
-
特定のPCだけ動作しないVBAマク...
-
ACCESS VBAのSplit()関数の使用...
-
エクセルで特定の列が0表示の場...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
教えて下さい
-
String""から型'Double'への変...
-
LaTeXのエラーについて(コンパ...
-
エクセルのマクロについて教え...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
Excel・Word リサーチ機能を無...
-
マクロの「SaveAs」でエラーが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
End Sub が必要です。
-
intel fortranのエラーで困って...
-
Excel VABについて 下記記述が...
-
フォートランのエラーについて...
-
pythonの条件分岐(if)
-
対応する関数ヘッダーがありません
-
43:syntax error at end of input
-
Excel VBA: UserForm.Show で実...
-
フォートラン(fortran)のエラー...
-
#ifndefとかヘッダファイルにつ...
-
Delphiでif文がうまく書けないです
-
AccessVBAでVLookupを使いたい
-
typedef による2重定義
-
構造体のポインタ参照
-
C言語のプログラムが実行できま...
-
DLLの使い方とerror C2146につ...
-
VB2005でOCXを動的に呼び出すに...
-
C2065: 'EnumDisplayDevices' :...
-
解説サイトに従ったfortran並列...
-
他クラスからForm1内コントロル...
おすすめ情報