• ベストアンサー

配列を関数に渡す方法

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

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

  • ベストアンサー
  • okadajun
  • ベストアンサー率42% (3/7)
回答No.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 ですね!

abudakusyon
質問者

お礼

ご回答ありがとうございます。 コードを書いてくださったので分かり易く 動作を確認することができました。 ByRefなどの使い方はしらなかったため この後調べてみたいと思います。 okadajunさんありがとうございました。

その他の回答 (5)

  • okadajun
  • ベストアンサー率42% (3/7)
回答No.5

単純に渡す方法が知りたいのですよね でしたら、参照渡しですが 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)
回答No.4

オールプライベートですので、引数として渡す必要性が???です。 下記でどうでしょうか? 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

abudakusyon
質問者

お礼

kazu1973さんご回答ありがとうございます。 確かに私が挙げた例では必要性はないのですが 渡す方法がしりたかったため質問させていただきました。 誤解を招く例で申し訳ありませんでした。

  • TYWalker
  • ベストアンサー率42% (281/661)
回答No.3

OKWaveで別の質問を見ていて知ったのですが、VBAでバリアント型の変数に不定数の配列をガサッと入れて処理できるんですね。 http://pc.nikkeibp.co.jp/article/NPC/20070803/279065/ これを使うと楽そう。 はずしていたらスミマセン。

abudakusyon
質問者

お礼

ご回答ありがとうございます。 便利な配列作成方法を教えていただきありがとうございます。 私も使いこなせるよう学んでいきたいと思います。 TYWalkerさんありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

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 でどうですか。

abudakusyon
質問者

お礼

ご回答ありがとうございます。 コードを書いてくださったので分かり易く 動作を確認することができました。 imogasiさんありがとうございました。

  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

こんにちは、エクセルの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 応用すれば、簡単に出来ると思います。

abudakusyon
質問者

お礼

ご回答ありがとうございます。 vbaでのコードでしたので配列の渡し方で つまずいてしまいました。 ただvbaでコードを書くときには参考にしたいと 思います。 tom11さんありがとうございました。

関連するQ&A