
プログラム初心者です。
よろしくお願いいたします。
数個の変数を構造体で定義し、そのメンバ名を
順に実行させたいのですができますでしょうか?
type koumoku
a1 as string
a2 as string
a3 as string
End type
Sub main()
koumoku.a1="egg"
koumoku.a2="book"
koumoku.a3="ohasi"
Dim syori as string
syori = koumoku.a1
※ここでeggを用いた処理を実施
syori = koumoku.a2
※ここでbookを用いた処理を実施
syori = koumoku.a3
※ここでohasiを用いた処理を実施
End sub
上記で実施している構造体のメンバ(a1~a3)は
繰り返し処理するので、繰り返し文にしたいと
思っていますが、そのような考えは間違っているでしょうか?
実際には、a1~a10など増やしたいと思っています。
また、不完全なコーディングですが誤りがあればご指摘いただきたく
何卒よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
将来的に数を増やすのであれば構造体を使うより
配列を使用した方が便利です。
Dim koumoku(2) As String
Dim shori As String
Dim n As Integer
koumoku(0)="egg"
koumoku(1)="book"
koumoku(2)="ohasi"
For n = 0 To 2
shori = koumoku(n)
※ここでshoriを用いた処理を実施
Next n
この回答への補足
ところどころ、最初と記述が変わってしまいました。
申し訳ありません。
分かりにくくなってしまいましたが
よろしくお願いいたします。
ご回答ありがとうございます。
確かに配列を使ったほうが便利ですね。
ありがとうございます。
稚拙なコードで誠に申し訳ありません。
なんかと半分ぐらい?出来上がりました。
構造体を使用している理由ですが、
他の関数でも使用するため、パブリックで定義してます。
ただ、下記のようにpublicで定義するとエラーが出るため
プライベートにしています。
なぜエラーになるのでしょうか?
さらに、d(2)の配列を他の関数に渡したい場合どのように
すればよいでしょうか?
沢山質問して申し訳ありませんがよろしくお願いいたします。
Private Type list
a(2) As String
b(2) As integer
End Type
Public con As String
Public rd As String
Sub test()
Dim c As list
c.a(0) = "egg"
c.a(1) = "book"
c.a(2) = "ohasi"
c.b(0) = 1
c.b(1) = 2
c.b(2) = 3
Dim d(2) As String
Dim I As Integer
For I = 0 To 2
con = c.a(I)
Do
rd = call kounyu()
If rd = "No" Then
Call wait()
Else
con = c.b(I)
End If
Loop While (1)
d(I) = rd
Next I
End Sub
Sub test2()
Dim cq As list
cq.a(0) = "coffee"
cq.a(1) = "peper"
cq.a(2) = "okoto"
For I = 0 To 2
con = cq.a(I)
Do
rd = call kounyu()
If rd = "No" Then
Call wait()
Else
Exit Do
End If
Loop While (1)
d(I) = rd
Next I
End Sub
No.1
- 回答日時:
type koumoku
a1 as string
a2 as string
a3 as string
End type
これは型の定義だけで、koumokuは型名で変数ではありません。
これを使うには改めて、この型の変数を定義する必要があります。
Sub main()
Dim koum As koumoku
Dim syori As String
koum.a1 = "egg"
koum.a2 = "book"
koum.a3 = "ohasi"
syori = koum.a1
MsgBox koum.a1
syori = koum.a2
MsgBox koum.a2
syori = koum.a3
MsgBox koum.a3
End Sub
とか。
この回答への補足
#1、#2の回答者様へ
すみません。早とちりしてるかもしれませんが、
構造体を使用する理由って、複数の関数に使用するため
じゃないですね。
いろんな変数をまとめたい場合という意味では、
カウンタに使用している変数などメンバに加えたほうが
良いということでしょうか?
それとも、やはり個別に配列で使用したほうがよいのでしょうか?
構造体を使用するメリットが未だによく分からないです。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
select caseの入れ子
-
Excel UserForm の表示位置
-
「段」と「行」の違いがよくわ...
-
Excel VBAでのWorksheet_Change...
-
マクロの「SaveAs」でエラーが...
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
土日の列幅の自動変更を教えて...
-
VBA シートをコピーする際に Co...
-
Worksheets メソッドは失敗しま...
-
Excel グラフのプロットからデ...
-
【マクロ】実行時エラー '424':...
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
VBAで結合セルを転記する法を教...
-
エクセルVBAが途中で止まります
-
EXCELで最後の行を固定
-
エクセル マクロで数値が変っ...
-
エクセルで離れた列を選択して...
-
マクロ実行後に別シートの残像...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あああ..ああい..ああう とい...
-
select caseの入れ子
-
エクセルで選択したセルがディ...
-
VBAバーコード照合 バーコード...
-
エクセルを開いたらカウントし...
-
ListBox1 ListBox2 条件抽出
-
VBAにて『元に戻すボタン』を作...
-
指数関数近似を行うプログラム...
-
vbs 文字位置を中央に
-
再帰構造のアルゴリズムで困っ...
-
打込み作業の自動化
-
エクセルVBAで、ユーザーボック...
-
配列の値を保持しながら要素を...
-
スペース区切りのAND検索
-
VBA sum ワークシートChange
-
【マクロ】実行時エラー '424':...
-
「段」と「行」の違いがよくわ...
-
Excel UserForm の表示位置
-
エクセルで離れた列を選択して...
-
マクロの「SaveAs」でエラーが...
おすすめ情報