特定の文字列、数値または日付が配列内にある場合、真偽結果を返す関数が見つかりました。私はちょうどそれを私に番号を与えるように少し変更しました(値が配列内にあれば、それは私に座標を与えます、そうでなければ-1になります)。IsInArray関数VBA
Public Function IsInArray2(DateToBeFound As Date, arr As Variant) As Long
Dim position As Long
IsInArray2 = -1
For position = LBound(arr, 1) To UBound(arr, 1)
If arr(position) = DateToBeFound Then
IsInArray2 = position
Exit For
End If
Next
End Function
この関数を使用して、日付が配列内にあるかどうかを確認しようとしています。そうであれば、私のコードで座標を使用してさらに計算することができます。
問題:何らかの理由でラインにを、私は取得していますし、エラー(範囲外の添字):
If arr(position) = DateToBeFound Then
私はすでに文字列に、数値に日付を変更し、配列参照を変更しようとしました、それが持っているアイテムの最大量に関して配列を赤字にしようとしましたが、それでもエラーは持続します。
アイデア?
すなわちArr=Sheets(1).Range("A1:B2").Value
配列は2次元である:あなたがシート上の範囲から直接配列をロード
'arr(位置、1)';) – R3uK
答えをありがとう。私はすでに同じ結果を試しています。どちらの方法でも、配列には次元が1つしかないので、どの次元を見るかを指定する必要がありますか? – DGMS89
配列を手動で構築したか、範囲からロードしましたか?どのようにあなたの機能にそれを渡していますか?ループの先頭に 'Debug.Print LBound(arr、1):Debug.Print UBound(arr、1):Debug.Print position'を追加してみてください。 – R3uK