2015-07-02 162 views
1

我有一个类( “名称”):通过类属性循环?

Option Explicit 

Public companyName As String 
Public companyCode As String 
Public companyCountry As String 
Property Get fullInfo() As String 
    fullInfo = "Code " & companyCode & " is " & companyCountry & " for " & companyName 
End Property 

和在Sub()是一个模块,我有以下:

Sub classTest() 

Dim c1 As New Names 
Dim c2 As New Names 
c1.companyCode = 14 
c1.companyCountry = "Ivory Coast" 
c1.companyName = "Ivory Company" 
c2.companyCode = 11 
c2.companyCountry = "Cameroon" 
c2.companyName = "Cameroon Company" 

Dim i As Integer 

debug.print c1.fullInfo 

End Sub 

这正确地将打印“代码14是象牙象牙公司海岸“。

我该如何编写一个循环来检查所有属性(是正确的单词吗?是c1,c2,属性?)。我想是这样的下方,但没有奏效:

for i = 1 to 2 
debug.print ci.fullInfo 
next i 

你可以看到,它显然是行不通的 - 但我怎样才能得到它这样做呢?对不起,我不知道c1部分叫什么,也不知道后面的部分是什么。被称为)

+0

我知道我可以做一个数组 - 我试图学习其他的东西。它看起来像我想要做一个集合,所以我仍然可以保留这些“键”...而在数组中,我不能使用一个键只提取“companyCountry” - 我必须知道这是存储在数组(x,2)部分或其他东西。 – BruceWayne

+1

快速教程:http://www.wiseowl.co.uk/blog/s239/collections.htm – xQbert

回答

2

如果您将c1,c2等存储在数组或集合中,则可以使用标准的For循环对它们进行循环,并为它们中的每一个调用fullInfo。

Sub Tester() 

    Dim col As New Collection, n As Names, i 

    For i = 1 To 10 
     Set n = New Names 
     n.companyCode = i 
     n.companyCountry = "Country_" & i 
     n.companyName = "Company_" & i 
     col.Add n 
    Next i 


    For Each n In col 
     Debug.Print n.fullInfo 
    Next n 

End Sub 
+0

哦,谢谢 - 集合看起来像我试图去。 – BruceWayne

1

看一个每个循环。像

For Each variable_name In collection_name 
    'Some code here. 
Next variable_name 
+0

试过,没有工作,因为我有我的代码 - 它看起来像我需要首先进行收集。我会创建一个集合,这将工作。谢谢! – BruceWayne