对于毫无疑问是一个简单问题的道歉 - 我对编码很新,所以即使从现有信息中找到答案也很难。
总之...
我已经定义了一个具有4个值的类(1 x Single,1 x String(用作键)和2 x Range)
然后我设法根据类设置Collection并填充集合,并且可以使用Debug.Print打印整个集合的值,并计算集合中的项目数。
但我无法通过使用索引位置或指定的键来访问集合中的单个对象。
尝试时我
运行时错误438 - 对象不支持此属性或方法。
底层电子表格是一个4列,200行表格,最终目标是将每一行作为一个对象,然后使用在一组单独的代码中定义的变量填充对象(行)的给定位置
无论如何,Class(PriceLadder)代码是:
Public ladderPriceKey As String
Public ladderPrice As Single
Public layMatchedLocation As Range
Public backMatchedLocation As Range
然后模块代码是:
Sub initialiseLadder()
'initialise ladder as collection
Dim ladder As Collection
Set ladder = New Collection
Dim cell As Range
Dim price As PriceLadder
'for each cell in Column A
For Each cell In Sheets(2).Range("A11:A220") ' & Range("A" & Rows.Count).End(xlUp).Row)
' create a new priceladder object
Set price = New PriceLadder
' fill the data
price.ladderPrice = cell
price.ladderPriceKey = cell
Set price.layMatchedLocation = Range(cell.Offset(0, 2).Address(RowAbsolute:=True, ColumnAbsolute:=True))
Set price.backMatchedLocation = Range(cell.Offset(0, 3).Address(RowAbsolute:=True, ColumnAbsolute:=True))
' add the price to the collection of ladder prices
ladder.Add price, price.ladderPriceKey 'price.ladderPriceKey set as the key for the collection object
Next
Debug.Print ladder.Count
Debug.Print ladder("10")
' Dim p As PriceLadder
'For Each p In ladder
'Debug.Print "PriceKey: " & p.ladderPriceKey & vbTab & "BackLocation: " & p.backMatchedLocation.Address & vbTab & "LayLocation: " & p.layMatchedLocation.Address & vbTab & "Price: " & p.ladderPrice()
' Next
End Sub
产生错误的行是:
Debug.Print ladder("10")
其中“10”是从price.ladderKeyPrice作为键添加的值之一
真的很抱歉,如果这是一个可怕的新手型问题。
感谢您提供的任何帮助。
理查德