5

わかりましたので、VB6 にはあまり詳しくありませんが、配列に値が含まれているかどうかを確認しようとしています。これは私が持っているものですが、エラーが発生しています。「passedValue」が間違ったタイプであることに問題がある可能性がありますが、そうは思いません。

    Dim transCodes As Variant
    transCodes = Array(40, 41, 42, 43)
    If (transCodes.Contains("passedValue")) Then
    *Do Stuff*
    End If

どんな助けでも本当に感謝します!

アップデート

構文の修正に失敗しました。「passedValue」が正しいタイプであることを確認するために使用できるキャスト/変換の例を教えてください。

アップデートの更新

VB6には「Contains」メソッドはありませんか? この単純なタスクを実行する他の方法はありますか?

4

4 に答える 4

11

ContainsVB6には、配列に対するネイティブメソッドがありません。

最善のオプションは、配列をウォークして各項目を順番にチェックすることです。

Found = False
For Index = LBound(transCodes) To UBound(transCodes )
  If transCodes(Index) = PassedValue Then
    Found = True
    Exit For
  End If
Next

If Found Then
  'Do stuff
  'Index will contain the location it was found
End If

代替案には、コレクションを使用し、その価値に基づいてアイテムを取得しようとすることが含まれますが、これはこの単純なケースでははるかに多くの作業です。

于 2012-05-23T13:53:10.713 に答える
4

If you want this in just one line, you can check whether a string array contains an item (without a loop) with the following code:

' ARR is an array of string, SEARCH is the value to be searched
Found = InStr(1, vbNullChar & Join(arr, vbNullChar) & vbNullChar, _
vbNullChar & search & vbNullChar) > 0

This was taken from a Devx tip

于 2015-10-25T11:51:31.613 に答える