プロが教えるわが家の防犯対策術!

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

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

ですね!
    • good
    • 0
この回答へのお礼

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

ByRefなどの使い方はしらなかったため
この後調べてみたいと思います。

okadajunさんありがとうございました。

お礼日時:2009/04/27 20:00

単純に渡す方法が知りたいのですよね


でしたら、参照渡しですが

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

になりますが、注意点は
渡した先でデータを変更したら
元も変わるということです
    • good
    • 0

オールプライベートですので、引数として渡す必要性が???です。


下記でどうでしょうか?
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
    • good
    • 0
この回答へのお礼

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

確かに私が挙げた例では必要性はないのですが
渡す方法がしりたかったため質問させていただきました。

誤解を招く例で申し訳ありませんでした。

お礼日時:2009/04/27 20:07

OKWaveで別の質問を見ていて知ったのですが、VBAでバリアント型の変数に不定数の配列をガサッと入れて処理できるんですね。


http://pc.nikkeibp.co.jp/article/NPC/20070803/27 …
これを使うと楽そう。
はずしていたらスミマセン。
    • good
    • 0
この回答へのお礼

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

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

TYWalkerさんありがとうございました。

お礼日時:2009/04/27 20:11

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
でどうですか。
    • good
    • 0
この回答へのお礼

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

imogasiさんありがとうございました。

お礼日時:2009/04/27 20:12

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

ご回答ありがとうございます。
vbaでのコードでしたので配列の渡し方で
つまずいてしまいました。

ただvbaでコードを書くときには参考にしたいと
思います。

tom11さんありがとうございました。

お礼日時:2009/04/27 20:15

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A