• ベストアンサー

プログラムの記述方法について

プログラム初心者です。 よろしくお願いいたします。 数個の変数を構造体で定義し、そのメンバ名を 順に実行させたいのですができますでしょうか? 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など増やしたいと思っています。 また、不完全なコーディングですが誤りがあればご指摘いただきたく 何卒よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • don_go
  • ベストアンサー率31% (336/1059)
回答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

nosense
質問者

お礼

ご回答ありがとうございます。 確かに配列を使ったほうが便利ですね。 ありがとうございます。 稚拙なコードで誠に申し訳ありません。 なんかと半分ぐらい?出来上がりました。 構造体を使用している理由ですが、 他の関数でも使用するため、パブリックで定義してます。 ただ、下記のように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

nosense
質問者

補足

ところどころ、最初と記述が変わってしまいました。 申し訳ありません。 分かりにくくなってしまいましたが よろしくお願いいたします。

その他の回答 (1)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答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 とか。

nosense
質問者

お礼

ご回答ありがとうございます。 すみません。 間違えておりました。 ありがとうございます。

nosense
質問者

補足

#1、#2の回答者様へ すみません。早とちりしてるかもしれませんが、 構造体を使用する理由って、複数の関数に使用するため じゃないですね。 いろんな変数をまとめたい場合という意味では、 カウンタに使用している変数などメンバに加えたほうが 良いということでしょうか? それとも、やはり個別に配列で使用したほうがよいのでしょうか? 構造体を使用するメリットが未だによく分からないです。。

関連するQ&A