MW211 EXIT

devlog
ExcelVBA/PHPのin_array()代替
2015年06月22日
その要素が配列にあるかを返す関数。「inArray(要素,配列) → TrueかFalse」
┌──────────────────────────────────────┐
│Function inArray(ByVal needle As Variant, _                                 │
│                 ByVal haystack As Variant) As Boolean                      │
│    inArray = (UBound(Filter(haystack, needle)) >= 0)                       │
│End Function                                                                │
└──────────────────────────────────────┘

でも、これだと部分一致検索になってしまうのであった。。。

完全一致検索を実現するには以下のように地道にやるしかないようだ。
┌──────────────────────────────────────┐
│Public Function inArray(ByVal needle As Variant, _                          │
│                        ByVal haystack As Variant) As Boolean               │
│    Dim theValue As Variant                                                 │
│    If IsEmpty(haystack) Then                                               │
│        inArray = False                                                     │
│        Exit Function                                                       │
│    End If                                                                  │
│    For Each theValue In haystack                                           │
│        If needle = theValue Then                                           │
│            inArray = True                                                  │
│            Exit Function                                                   │
│        End If                                                              │
│    Next theValue                                                           │
│    inArray = False                                                         │
│End Function                                                                │
└──────────────────────────────────────┘
分類:ExcelVBA