- ベストアンサー
配列を関数に渡す方法
VB6.0のプログラムで質問があるのですが 下のプログラムのように配列num、num1を関数AAAに 渡したいと思うのですがどうすればいいのでしょうか? よろしくお願いいたします。 Option Explicit Private num(10) As Integer Private num1(10) As Integer Private Sub Write_Click() AAA(num) AAA(num1) End Sub Private Function AAA(???) Dim i As Integer For i = 1 To 10 ???(i) = i Next i End Function
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
コードミスしてました申し訳ない Option Explicit Private num(10) As Integer Private num1(10) As Integer Private Sub Write_Click() Call AAA(num) Call AAA(num1) End Sub Private Function AAA(ByRef test() As Integer) Dim i As Integer For i = 1 To 10 test(i) = i Next i End Function ですね!
その他の回答 (5)
- okadajun
- ベストアンサー率42% (3/7)
単純に渡す方法が知りたいのですよね でしたら、参照渡しですが Option Explicit Private num(10) As Integer Private num1(10) As Integer Private Sub Write_Click() AAA(num) AAA(num1) End Sub Private Function AAA(ByRef test() As Integer) Dim i As Integer For i = 1 To 10 test(i) = i Next i End Function になりますが、注意点は 渡した先でデータを変更したら 元も変わるということです
- kazu1973
- ベストアンサー率40% (14/35)
オールプライベートですので、引数として渡す必要性が???です。 下記でどうでしょうか? Option Explicit Private num(10) As Integer Private num1(10) As Integer Private Sub Write_Click() AAA End Sub Private Function AAA Dim i As Integer For i = 1 To 10 num(i) = i num1(i) = i Next i End Function
お礼
kazu1973さんご回答ありがとうございます。 確かに私が挙げた例では必要性はないのですが 渡す方法がしりたかったため質問させていただきました。 誤解を招く例で申し訳ありませんでした。
- TYWalker
- ベストアンサー率42% (281/661)
OKWaveで別の質問を見ていて知ったのですが、VBAでバリアント型の変数に不定数の配列をガサッと入れて処理できるんですね。 http://pc.nikkeibp.co.jp/article/NPC/20070803/279065/ これを使うと楽そう。 はずしていたらスミマセン。
お礼
ご回答ありがとうございます。 便利な配列作成方法を教えていただきありがとうございます。 私も使いこなせるよう学んでいきたいと思います。 TYWalkerさんありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
Private Sub Write_Click() Dim num(9) As Integer Dim num1(3) As Integer AAA num() AAA num1() aa = num For i = 0 To UBound(aa) MsgBox num(i) Next i aa = num1 For i = 0 To UBound(aa) MsgBox num1(i) Next i End Sub Private Function AAA(ByRef ary1) Dim i As Integer For i = 0 To UBound(ary1) ary1(i) = i Next i 'For i = 0 To UBound(ary1) ' MsgBox ary1(i) 'Next i End Function でどうですか。
お礼
ご回答ありがとうございます。 コードを書いてくださったので分かり易く 動作を確認することができました。 imogasiさんありがとうございました。
- tom11
- ベストアンサー率53% (134/251)
こんにちは、エクセルのvbaで書いてみました。 たぶん、VB6にも、使えると思います。 Public Sub f() Dim num(10) As Integer Dim num1(10) As Integer Call aaa(num) Call aaa(num1) Call show(num) Call show(num1) End Sub Public Sub show(n() As Integer) Dim i As Integer Debug.Print "******************" For i = LBound(n) To UBound(n) Debug.Print n(i) Next End Sub Public Sub aaa(n() As Integer) Dim i As Integer For i = LBound(n) To UBound(n) n(i) = i Next End Sub 実行結果 f ****************** 0 1 2 3 4 5 6 7 8 9 10 ****************** 0 1 2 3 4 5 6 7 8 9 10 応用すれば、簡単に出来ると思います。
お礼
ご回答ありがとうございます。 vbaでのコードでしたので配列の渡し方で つまずいてしまいました。 ただvbaでコードを書くときには参考にしたいと 思います。 tom11さんありがとうございました。
お礼
ご回答ありがとうございます。 コードを書いてくださったので分かり易く 動作を確認することができました。 ByRefなどの使い方はしらなかったため この後調べてみたいと思います。 okadajunさんありがとうございました。