athome 发表于 2008-7-11 11:23:00

选择集的问题请教 兰州人

<p>Public Sub CreateSSetFilter(ByRef filterType As Variant, ByRef filterData As Variant, ParamArray filter())<br/>If UBound(filter) Mod 2 = 0 Then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里过滤器数组的个数几数还是偶数,不太懂哦<br/>&nbsp;&nbsp;&nbsp; MsgBox "Fileter 参数无效"<br/>&nbsp;&nbsp;&nbsp; Exit Sub</p><p>End If</p><p>Dim fType As Integer<br/>Dim fData As Variant<br/>Dim count As Integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘count的具体数值怎么确定也不明白,<br/>count = (UBound(filter) + 1) / 2<br/>ReDim fType(count - 1)<br/>ReDim fData(count - 1)<br/>Dim i As Integer<br/>For i = 0 To count - 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; fType(i) = fType(2 * i)<br/>&nbsp;&nbsp;&nbsp; fData(i) = fData(2 * i + 1)<br/>&nbsp;&nbsp;&nbsp; <br/>Next i</p><p>filterType = fType<br/>filterData = fData</p><p><br/>End Sub</p><p>能不能麻烦那位高手给解释一下哦?</p>

sailorcwx 发表于 2008-7-11 12:42:00

<p>x Mod 2得到的值为0,说明x是偶数<br/>Fileter由fType和fData组成,他们是一对一的关系,所以Fileter的数目应该是偶数,可是由于数组的下标是0开始的,所以上标返回偶数,说明fileter的数目是奇数,因此是不对的</p><p>上面说了,Fileter两部分组成,下标是0开始,所以上标加1可以得到Fileter的数目,由于fType和fData是一对一的关系,所以fType和fData的数目分别为fileter数目的一半,也就是(UBound(filter) + 1) / 2<br/></p><p></p><p></p>
页: [1]
查看完整版本: 选择集的问题请教 兰州人