Excel VBA関数を記述しようとしています。ユーザは2つのパラメータを入力し、最初のパラメータが2番目のパラメータであるかどうかを調べ、TRUE
またはFALSE
を返します。私はサブルーチンとして機能するようにしましたが、関数ではありません。私は何が欠けていますか?Excel VBA:範囲内のオブジェクトを探す
これはおそらくかなり基本的ですが、それは私にいくつかの問題を与えています。
ありがとうございます!
**私は私ではなく、コレクションの配列を使用することができることを実現するが、私はこの可能であれば
EDITようにそれを好む:もう少し詳細に問題を記述するために:私は決定するために探していますinput_cell
の値がlist
の範囲にある場合、input_cell
がlist
の範囲に含まれていないと表示されません。
私は2つの値を入力すると、それはコレクションは私の強いスーツではありませんが、私は何を見逃していることはコレクションにキーを追加していると信じて#VALUE!
エラー
Function INRANGE(input_cell As Range, list As Range) As Boolean
Dim coll As New Collection
'*******Add items to coll********'
'Find size of collection
Dim LastRow As Long
LastRow = list.Rows.Count
'Cells(Rows.Count, input_cell.Column).End(xlUp).Row
'Add rows to collection
Dim i As Integer
For i = list.Row To LastRow
coll.Add Cells(i, list.Column).Value
Next i
'*******Search collection********'
Dim Current_Cell As Variant
Dim isInList As Boolean
isInList = False
Dim k As Integer 'Count of loop through list
For k = list.Row To LastRow
If input_cell = coll(k) Then
isInList = True
End If
Next k
INRANGE = isInList
End Function
関数内から関数を使用しようとしているようです。また、2つの範囲パラメータを宣言し、それらを供給していません。関数にfalseを指定するべきではありません。あなたは、(あなたが宣言したように)それからブール値を受け取るために関数にパラメータを与える必要があります。 – Brian
組み込みの 'Intersect'関数を使用することを考えましたか?これは2つの範囲の交点に基づいて' TRUE/FALSE'を返します。あなたの記事に基づいて、私は 'Intersect'があなたが必要とするものを一行のコードでより効率的に達成すると思います。 – user3561813
input_cellがリスト内にあるかどうかを調べようとしていますか(たとえば、C2がC1:C10の中にあるか)、input_cellの値がリスト内にあるかどうかを調べようとしていますか(5が{3,2,6,7 、5、10、11} – OldUgly