2

計算された数値「Birthday(i,0)」が配列「Birthday」に既に存在するかどうか、および For カウンターを終了するかどうかをチェックする短いコードがあります。For Counter を使用して配列「Birthday」のすべての要素をチェックせずに、「Birthday(i,0)」が既に存在するかどうかをテストする簡単な方法はありますか。

よろしくお願いします。

コードは以下のとおりです。

 For i = 1 To MaxPeople

         Birthday(i, 0) = WorksheetFunction.RoundUp(Rnd() * 365, 0)

         For j = 1 To i - 1
             If Birthday(i, 0) = Birthday(j, 0) Then
                   NumberofPeople = i
                   Exit For
             End If

         Next j

         If NumberofPeople > 0 Then Exit For

  Next i
4

2 に答える 2

3
Dim rv

'find the position of a value in the first dimension of an array
rv = Application.Match(yourDate, Application.Index(Birthday, 0, 1), 0)
'if not found, rv will be an error value
If IsError(rv) Then
    Debug.Print "Not found"
Else
    Debug.Print "Found at pos " & rv
End If
于 2012-07-26T00:55:17.597 に答える
0

この例が役立つかどうか確認してください。区切り記号を使用して配列を結合してから、を使用しINSTRて配列内の値を見つけます。

Sub Sample()
    Dim n As Long
    Dim MyArray(5, 0) As Long
    Dim Delim As String

    n = 4

    Delim = Chr$(1)

    MyArray(0, 0) = 2
    MyArray(1, 0) = 3
    MyArray(2, 0) = 4
    MyArray(3, 0) = 5
    MyArray(4, 0) = 1

    If InStr(1, Delim & Join(WorksheetFunction.Transpose(MyArray), Delim) & _
    Delim, Delim & n & Delim, 1) Then
        Debug.Print "Exists"
    Else
        Debug.Print "Does Not Exist"
    End If
End Sub
于 2012-07-26T00:59:18.373 に答える