重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

プログラム初心者です。

よろしくお願いいたします。

数個の変数を構造体で定義し、そのメンバ名を
順に実行させたいのですができますでしょうか?

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など増やしたいと思っています。
また、不完全なコーディングですが誤りがあればご指摘いただきたく
何卒よろしくお願いいたします。

A 回答 (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

この回答への補足

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

補足日時:2009/09/13 09:14
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/09/13 09:14

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

補足日時:2009/09/13 09:16
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

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

お礼日時:2009/09/13 08:50

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