まさお と申します。 宜しくお願い致します。
WinXP Pro SP1 VB6 SP6 です。
下記コードで※部で「ErrNum=5, プロシージャの呼び出し、または引数が
不正です。」エラーが発生します。
クラスから配列変数の取得の仕方が悪いのだと思いますが修正方法が判り
ません。
ご教授戴きたくお願い致します。
Public Sub Main()
Dim ClaTest As ClassTest: Set ClaTest = New ClassTest
Dim i As Long, s As String, v As Variant
For i = 0 To 10
Call ClaTest.AddMyArray(i)
Next
For Each v In ClaTest.MyArray
Debug.Print v '←OK
Next
s = Join(ClaTest.MyArray, ",") '※
'↑ErrNum=5, プロシージャの呼び出し、または引数が不正です。
MsgBox s
Set ClaTest = Nothing
End Sub
******ClassTest モジュール******
Option Explicit
Private mvarMyArray() As Long 'ローカル コピー
Public Property Get MyArray() As Variant
MyArray = mvarMyArray
End Property
Public Function AddMyArray(ByVal vData As Long)
Dim lngUbound As Long
lngUbound = -1
On Error Resume Next
lngUbound = UBound(mvarMyArray) + 1
On Error GoTo 0
If lngUbound = -1 Then
ReDim mvarMyArray(0)
mvarMyArray(0) = vData
Else
ReDim Preserve mvarMyArray(lngUbound)
mvarMyArray(lngUbound) = vData
End If
End Function
以上**ClassTest モジュール******
> s = Join(ClaTest.MyArray, ",") '※
> '↑ErrNum=5, プロシージャの呼び出し、または引数が不正です。
Debug.Print TypeName(ClaTest.MyArray)
が、"Long()" を返している事に注意してください。
Join に渡すことができるのは、String() または Variant() です。
魔界の仮面弁士 さん、ありがとうございました。
> Join に渡すことができるのは、String() または Variant() です。
>
ワッ! 知りませんでした。
Dim MyArray(10) As Long
For i = 0 To 10: MyArray(i) = i: Next
s = Join(MyArray, ",")
同じエラーが発生しました。
そうだったのですネ。
ありがとうございました。