在vba中循环一个类的​​属性

我创build了这个类,

Interval.cls public x as new collection public y as new collection public z as string 

我希望通过属性循环,因为我希望用户在表单中selectinputx,y,z在我的子

 sub test() dim inter as new Intervals inter.x.add "a" inter.x.add "a" inter.x.add "b" inter.x.add "b" inter.x.add "b" userString1 = x userString2 = a 

“我想使它dynamic化,以便用户希望我可以提供结果。 '我只是想让比较userString和我的属性

 for each i in inter 

'所以我希望我在这个循环是我的属性x,y,z所以我可以使if语句if(i = userString1)然后

 end if next i end sub 

我知道我也许可以在课堂上做一个周末来让它迭代,我不知道该怎么做

任何帮助表示赞赏

 'in class Public Property Get Item(i As Integer) As Variant Select Case ndx Case 1: Item = Me.x Case 2: Item = Me.y Case 3: Item = Me.z End Select End Property 'in sub Dim c as Collection Dim s as String For i = 1 to 3 if i < 3 then set c = inter.Item(i) 'iterate through collection else s = inter.Item(i) end if next i 

像这样的事情可能是最简单的方法,我没有testing,但希望至less让你开始

这是你之后的事情吗?

 'in class Public x As New Collection Public y As New Collection Public z As String Public Property Get Item(i As Integer) As Variant Select Case i Case 1: Item = Me.x Case 2: Item = Me.y Case 3: Item = Me.z End Select End Property Sub try() Dim userString2 As String Dim userString1 As String Dim inter As Interval Dim i As Integer Set inter = New Interval inter.x.Add "a" inter.x.Add "a" inter.x.Add "b" inter.x.Add "b" inter.x.Add "b" userString2 = "aabbb" For i = 1 To inter.x.Count userString1 = userString1 & inter.x.Item(i) Next i If userString1 = userString2 Then '<do whatever> End If End Sub 

好的,忘记课程,只使用一个数组? string数组可以是任意长度的,您可以通过调用过程dynamic控制它的大小。

 Sub tryWithArray(ByRef StringArray() As String) Dim userString2 As String Dim i As Integer userString2 = "b" For i = 1 To UBound(StringArray()) If userString2 = StringArray(i) Then 'do something End If Next i End Sub