|
本帖最后由 lee1892 于 2013-9-3 08:44 编辑
zhaogang1960 发表于 2013-9-2 23:03
对于对速度要求不高的应用,有时书写简单也是需要的
顺便说一句:
噢,我个人认为在VBA中使用Excel函数都是不合适的,尤其是对于初学者而言。
仅就楼主的问题而言,如你的方法,显然楼主没有学到其应该学到的VBA知识。- Sub Test()
- Dim aTest(), aPlaces
- aTest = Array(1, 2, 5, 3, 4, 5, 5, 8)
- aPlaces = ItemPlace(aTest, 5)
- Debug.Print UBound(aPlaces)
- Debug.Print Join(aPlaces, ", ")
- aPlaces = ItemPlace(aTest, 6)
- Debug.Print UBound(aPlaces)
- End Sub
- Function ItemPlace(ByRef arr(), ByVal item)
- Dim aRes(), i As Long, nInd As Long
- ReDim aRes(0 To UBound(arr) - LBound(arr))
- nInd = -1
- For i = LBound(arr) To UBound(arr)
- If arr(i) = item Then
- nInd = nInd +1
- aRes(nInd) = i
- End If
- Next
- If nInd >= 0 Then
- ReDim Preserve aRes(0 To nInd)
- Else
- Erase aRes
- ReDim aRes(-1 To -1)
- End If
- ItemPlace = aRes
- End Function
复制代码 |
评分
-
2
查看全部评分
-
|