4

整数と整数の配列を関数に渡して、整数が配列のメンバーであるかどうかを確認しようとしています。矢印の付いた行は、「expect:=」としてコンパイル エラー メッセージを表示します。

Public Sub mainSub()
B = Array(4, 5, 6, 7, 8, 9)
ckArr(4,B) '<-------
End Sub

Public function ckArr(N As Integer, A() As Integer)
For i = 0 To UBound(A)
If N = A(i) And i <= UBound(A) Then
    Debug.Print N; " Is in the List"
    Exit For 'Do
ElseIf i < UBound(A) Then GoTo NXT
Else:
    Debug.Print N; " Is NOT in the List"
    Exit For 'Do
End If
NXT:
'i = i + 1
Next 'Loop
End function
4

3 に答える 3

5

関数を呼び出すには、次のいずれかを使用します。

a = func(b,c)

または、結果に興味がない場合は、次のようにします。

call func(b, c)

また

func b, c

やっている

func(b,c)

無効です


したがって、特定のケースでは、次のようになります。

Public Sub mainSub()  
  B = Array(4, 5, 6, 7, 8, 9)
  Call ckArr(4,B) '<-------
End Sub

また

Public Sub mainSub()  
  B = Array(4, 5, 6, 7, 8, 9)
  ckArr 4, B '<-------
End Sub
于 2013-06-08T10:07:04.060 に答える
3

以下のコードを試してください:

Public Sub mainSub()
    Dim IsMember As Boolean
    b = Array(4, 5, 6, 7, 8, 9)

    Dim checkVariable As Integer
    checkVariable = 4
    IsMember = ckArr(checkVariable, b)

    If IsMember Then
    MsgBox checkVariable & " is a member of member of array"
    Else
    MsgBox checkVariable & " is not a member of member of array"
    End If
End Sub

Public Function ckArr(N As Integer, A As Variant) As Boolean
    For i = LBound(A) To UBound(A)

        If N = A(i) Then
            ckArr = True
            Exit Function
        End If
    Next

End Function

ここに画像の説明を入力

B = Array(4, 5, 6, 7, 8, 9)Bここのバリアント もそうです。

したがって、以下の手順のパラメーターをバリアントとして作成しました。

から Public function ckArr(N As Integer, A() As Integer)

Public Function ckArr(N As Integer, A As Variant) As Boolean

于 2013-06-08T09:39:41.090 に答える
2

B を整数配列として宣言する

   Public Sub mainSub()

        Dim B(0 To 5) As Integer
        B(0) = 4
        B(1) = 5
        B(2) = 6
        B(3) = 7
        B(4) = 8
        B(5) = 9

        ckArr 4, B
    End Sub

    Public Function ckArr(N As Integer, A() As Integer)
        For i = 0 To UBound(A)
            If N = A(i) And i <= UBound(A) Then
                Debug.Print N; " Is in the List"
                Exit For    'Do
            ElseIf i < UBound(A) Then GoTo NXT
            Else:
                Debug.Print N; " Is NOT in the List"
                Exit For    'Do
            End If
    NXT:
            'i = i + 1
        Next    'Loop
    End Function
于 2013-06-08T09:49:38.653 に答える