- ベストアンサー
変数の配列の使い方教えてください。(初心者)
VBで関数を作ってるのですが、 Function kansuu as Long Dim a(50) as Long Do (処理) Loop End Function ↑こんな形になってまして、変数a(0)~a(50)にはそれぞれ値が入ってます。{a(50)まで全部使うとは限りません。} Do文を抜ける条件として、途中に「もしa(0)~a(50)の値が全て"0"ならDo文を抜ける」という処理を入れたいのですが、変数aの"配列要素全て"という文の記述方法が分かりません。どなたか教えてください
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
それはこのループの中では無理です。 もう一つ前にループを作ってそこでオールゼロのチェックをしないとだめです。
その他の回答 (4)
以下のような関数を作ります。 Private Function isZero(x() As Long) As Boolean ____Dim j ____For j = LBound(x) To UBound(x) ________If x(j) <> 0 Then ____________isZero = False ____________Exit Function ________End If ____Next ____isZero = True End Function そして、 Do While isZero(a) = False ____(処理) Loop とされてはいかがでしょう。 isZero関数の中の、LBound,UBoundが、それぞれ配列の添え字の最小値と最大値を返します。
- tatsu99
- ベストアンサー率52% (391/751)
以下のような専用の関数を作られてはいかがですか。 Private Function check_zero(ByRef data() As Long) As Boolean Dim i As Integer check_zero = False For i = 0 To 50 If data(i) <> 0 Then Exit Function Next check_zero = True End Function この関数は渡されたlong型の50の配列が全て0であればtrueを返します。そうでなければfalseを返します。 dim a(50) as long If check_zero(a()) = True Then 全て50個が0の時の処理 end if のように使います
- apolo0
- ベストアンサー率7% (1/13)
すいません。間違ってました。 下記でどうでしょう? Function kansuu as Long Dim a(50) as Long Do If NOT a(0) and NOT a(1) and ・・・ and NOT a(50) Then ExitDo (処理) Loop End Function Function kansuu as Long Dim a(50) as Long Do If a(0)=0 and a(1)=0 and ・・・ and a(50)=0 Then ExitDo (処理) Loop End Function
お礼
なるほどぉー。 やはり、一つ一つ記述する方法になるのですねー。 素早いご回答ありがとうございました!
- apolo0
- ベストアンサー率7% (1/13)
素直に、考えれば下記のようになります。 Function kansuu as Long Dim a(50) as Long Do If a(0) and a(1) and ・・・ and a(50) Then ExitDo (処理) Loop いかがでしょうか?
お礼
なるほどぉー(;;) 出来ないんですね。 素早いご回答ありがとうございました!